我希望能够从html返回一个包含所有图像列表(src =“”值)的数组
[0] =“images / header.jpg”[1] =“images / person.jpg”
是否有正则表达式可以做到这一点?
提前谢谢了!
/src="([^"]+)"/
图像将在第1组中。
例:
preg_match_all('/src="([^"]+)"/', '<img src="lol"><img src="wat">', $arr, PREG_PATTERN_ORDER);
返回:
Array
(
[0] => Array
(
[0] => src="lol"
[1] => src="wat"
)
[1] => Array
(
[0] => lol
[1] => wat
)
)
欢迎来到百万分之一的世界“如何使用正则表达式来解决这些价值”问题;-)我建议在寻找答案之前使用搜索工具 - 这里只是一些主题,它们提供的代码可以完全满足您的需求;
这是Håvard提供的正则表达式的更精美版本:
/(?<=src=")[^"]+(?=")/
此表达式使用Lookahead和Lookbehind Assertions来获取您想要的内容。
$str = '<img src="/img/001.jpg"><img src="/img/002.jpg">';
preg_match_all('/(?<=src=")[^"]+(?=")/', $str, $srcs, PREG_PATTERN_ORDER);
print_r($srcs);
输出将如下所示:
Array
(
[0] => Array
(
[0] => /img/001.jpg
[1] => /img/002.jpg
)
)
我看到很多人都在与Håvard的帖子和<script>
问题斗争。以下是更严格的解决方案:
<img.*?src="([^"]+)".*?>
例:
preg_match_all('/<img.*?src="([^"]+)".*?>/', '<img src="lol"><img src="wat">', $arr, PREG_PATTERN_ORDER);
返回:
Array
(
[1] => Array
(
[0] => "lol"
[1] => "wat"
)
)
这样可以避免匹配其他标签。 HERE is example。