正则表达式匹配img标记中的任何网址

时间:2010-12-14 05:13:33

标签: php regex

我需要一个可以匹配img src标签中任何网址的正则表达式

网址可能不同于“/images/temp.jpg”或“temp1.jpg”甚至“http://www.example.com/temp.jpg?i=123”或其他任何内容

我写了以下代码:

preg_match_all('/(href|src)\s*=\s*"([^\s]+\/\/[^\/]+.\/[^\s]+\.(jpg|jpeg|png|gif|bmp))/ixu'

但它不匹配许多网址,包括那些查询字符串,如?i = 12345

任何人都知道如何实现这个目标?

由于

2 个答案:

答案 0 :(得分:8)

您可以使用

<img [^>]*src="([^"]+)"

并采取第一个捕获组。

编辑:顺便说一下,假设您没有正确关闭它就不会启动标记。或许更好的是

<img [^>]*src="([^"]+)"[^>]*>

编辑2:目前还不清楚你想要达到的目标,我觉得我在浪费时间来帮助你。在你的编辑中,你写了你尝试过:

preg_match_all('/(href|src)\s*=\s*"([^\s]+\/\/[^\/]+.\/[^\s]+\.(jpg|jpeg|png|gif|bmp))/ixu'

为什么没有提到img?为什么你包含href,当img标签不采用href属性?看起来你似乎更感兴趣的是检查某些东西是否是有效的图像URL,而不是匹配img标记内指定的某些URL。请注意,我提供的正则表达式不检查URL的有效性;它只是基于以下事实:src属性中引号中出现的内容应该是有效的URL。我是这样做的,因为在许多情况下这是一个实际的假设,而且你并不具体说明你真正想要的东西。如果你不能提出更好的问题,我不会进一步更新。

答案 1 :(得分:1)

多年来首先搜索,询问并回答了数百次:

regular expression: Find url from anchor tag

只需将<a替换为<img,将href替换为src