我试图找出一种方法来匹配3种不同的URL类型,它们是;
http://(www.)domain.com 或 www.domain.comhttp://(www.)domain.com/image.jpg/.png/gif 或 www.domain.com/image.jpg/.png/.gifhttp://(www.)youtube.com/watch?v=Li1zXaEYol8 或 www.youtube.com/watch?v=Li1zXaEYol8注意,我不希望它们被解析,如果它们只是没有http或www的domain.com。
我面临的问题是让这三个-甚至2个一起工作,我有一个类可以自动链接,所以如果有什么与http://或www。它将链接它,但是如果我在其中放置一个图像,它将解析图像中URL的HTML,如下所示:
<img src="<a href="www.domain.com">domain.com</a>" />这是垃圾:
我还想扫描YouTube URL,然后用嵌入代码替换URL,以便视频显示而不是URL。我已经从URL中提取出了ID,但无法完成替换工作。
请注意,这是一个文本区域,比如注释字段,人们在其中输入注释,因此自动链接URL、解析图像和YouTube视频是很好的。
这些数据是通过SQL查询显示的,并回显$comments‘’message‘,并设置了一些str_replace内容来完成一些简单的格式化。
任何帮助都将不胜感激。
发布于 2010-01-11 06:40:14
给你:
(?:http:\/\/www\.|http:\/\/|www\.)(?:youtube\.com\/watch\?v=(?:\w+)|domain\.com\/image.(?:jpg|png|gif)|domain\.com)或用分隔符:
~(?:http:\/\/www\.|http:\/\/|www\.)(?:youtube\.com\/watch\?v=(?:\w+)|domain\.com\/image.(?:jpg|png|gif)|domain\.com)~i你可以测试上面的RegExs @ Robular.
为了找出URL是否在不需要的HTML标记中,我建议您使用DOM解析器。
另外,请查看以下相关问题:如何模拟StackOverflow自动链接行为。
关于YouTube替换,您可以这样做:
echo preg_replace('~youtube\.com\/watch\?v=(\w+)~i', 'embed code $1', $comments['message']);https://stackoverflow.com/questions/2040284
复制相似问题