PHP正则表达式按类名匹配多个元素[重复]

问题描述 投票:-1回答:2

这个问题在这里已有答案:

我有以下带有许多类的HTML:

<img class="lorem ipsum red" />
<img class="red" />
<img class="lorem red ipsum dolor" />
<img class="red ipsum" />

我正在使用preg_match_all查找所有图像

preg_match_all( '/<img [^>]+>/', $html, $matches )

是否有可能匹配所有具有类名imgred标签?

我试过/red\d+/但不起作用

php regex preg-match-all
2个回答
1
投票

使用正则表达式来查找HTML元素(这种复杂性):糟糕的主意。使用HTML解析器和XPath!即使在JavaScript中,您也可以利用DOM。

?php 
$doc =<<<DEMO
<img class="lorem ipsum red" />
<img class="red" />
<img class="lorem red ipsum dolor" />
<img class="red ipsum" />
DEMO;

$xml = new DOMDocument();
//Or you could use for locally saved files
//@$xml->loadHTMLFile('savedfile.html');
@$xml->loadHTML($doc);
foreach($xml->getElementsByTagName('img') as $image) {
    if(strstr($image->getAttribute('class'),'red')==true){
        $images[] = $image->getAttribute('src');
    }
}
print_r($images);
?>

这是ref


0
投票

试试这个正则表达式:

/<img.+?class=".*?red.*?"/

但是:Kua zxsw指出

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