我需要一个可以匹配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
任何人都知道如何实现这个目标?
由于
答案 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)