正则表达式在 php 中捕获 <img> src [重复]

Posted

技术标签:

【中文标题】正则表达式在 php 中捕获 <img> src [重复]【英文标题】:Regex to capture <img> src in php [duplicate] 【发布时间】:2014-07-13 04:07:13 【问题描述】:

我想提取 img src 并使用 preg_match_all 我有这个:

$tag = '<img src="path/to/image.png" />';
preg_match_all('/(width|height|src)=("[^"]*")/i',$tag, $img[$tag]);

返回:

Array
(
[<img src="path/to/image.png" />] => Array
    (
        [0] => Array
            (
                [0] => src="path/to/image.png"
            )

        [1] => Array
            (
                [0] => src
            )

        [2] => Array
            (
                [0] => "path/to/image.png"
            )

    )

)

无论标签中使用双引号还是单引号,我如何编写正则表达式以返回相似的结果?我会写:

$tag = "<img src='path/to/image.png' />";
preg_match_all('/(width|height|src)=(\'[^\']*\')/i',$tag, $img[$tag]);

这可行,但我对正则表达式不够熟悉,无法编写一个表达式来处理。我确实尝试过:

preg_match_all('/(width|height|src)=((\'[^\']*\')|("[^"]*"))/i',$tag, $img[$tag]);

但这似乎会在数组中返回我不想要的额外匹配项。

【问题讨论】:

***.com/questions/1732348/… 是的,一个永恒的问题和永恒的答案。相当愉快的阅读 【参考方案1】:

你可以用这个:

(width|height|src)=("[^"]*"|'[^']*')

我基本上使用了交替来匹配“fds”或“fds”。

【讨论】:

谢谢!我知道有人问过这个问题的各种排列,但我的问题不是提取 img,而是像你演示的那样,它是关于交替的正则表达式语法。这正是我想要的,但仍在学习正则表达式。

以上是关于正则表达式在 php 中捕获 <img> src [重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP 正则表达式匹配 img ,PHP 正则提取或替换图片 img 标记中的任意属性。

PHP正则表达式提取IMG标签的问题

php正则表达式匹配img中任意属性的方法

php 正则表达式

php正则表达式提取img alt/title标签并替换

js 正则表达式,分组非捕获