PHP中的正则表达式返回包含来自html的所有图像的数组,例如:all src =“images / header.jpg”实例

问题描述 投票:0回答:4

我希望能够从html返回一个包含所有图像列表(src =“”值)的数组

[0] =“images / header.jpg”[1] =“images / person.jpg”

是否有正则表达式可以做到这一点?

提前谢谢了!

php html regex
4个回答
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
        )

)

3
投票

欢迎来到百万分之一的世界“如何使用正则表达式来解决这些价值”问题;-)我建议在寻找答案之前使用搜索工具 - 这里只是一些主题,它们提供的代码可以完全满足您的需求;


1
投票

这是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
        )

)

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

© www.soinside.com 2019 - 2024. All rights reserved.