我希望能够从html返回一个包含所有图像列表(src =“”值)的数组
[0] =“images / header.jpg” [1] =“images / person.jpg”
是否有正则表达式可以执行此操作?
非常感谢提前!
答案 0 :(得分:3)
欢迎来到百万分之一的世界“如何使用正则表达式来解决这些价值”问题;-)我建议在寻求答案之前使用搜索工具 - 这里只是提供代码来完成什么的一些主题你需要;
答案 1 :(得分:1)
/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
)
)
答案 2 :(得分:1)
以下是Håvard提供的正则表达式的更精美版本:
/(?<=src=")[^"]+(?=")/
此表达式使用Lookahead&amp; 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
)
)
答案 3 :(得分:0)
我看到很多人都在讨论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