我需要一个可以匹配 img src 标签中任何 url 的正则表达式
URL 可以是“/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)的网址
有人知道如何实现这一目标吗?
Thanks
您可以使用
<img [^>]*src="([^"]+)"
并采取第一个捕获组。
EDIT:顺便说一句,这假设您在没有正确关闭标签的情况下不会启动它。也许更好的是
<img [^>]*src="([^"]+)"[^>]*>
EDIT 2:目前尚不清楚您想要实现什么目标,我感觉我在浪费时间试图帮助您。在您的编辑中,您写道您尝试过:
preg_match_all('/(href|src)\s*=\s*"([^\s]+\/\/[^\/]+.\/[^\s]+\.(jpg|jpeg|png|gif|bmp))/ixu'
为什么没有提到img?当 img 标签不采用 href 属性时,为什么要包含 href?看起来您似乎更感兴趣的是检查某些内容是否是有效的图像 URL,而不是匹配 img 标记内指定的某些 URL。请注意,我提供的正则表达式不会检查 URL 的有效性;它只是基于这样一个事实:src 属性中的引号中出现的任何内容都应该是有效的 URL。我这样做是因为在很多情况下这是一个实际的假设,而你并没有具体说明你真正想要什么。如果您不能提出更好的问题,我将不会进一步更新。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)