我想使用 PHP 创建与 html img 标签的开头内的文本及其匹配的结束尖括号相匹配的正则表达式。假设变量 $searchThis 中有 html 文本
$searchThis = "<html><div></div><img src='/relative/path/img1.png'/></div>
<img src='/relative/path/img2.png'/><div></div></div>
<img src='/relative/path/img3.png'/><ul><li></li></ul></html>";
我想匹配省略号所替换的标签中的内容。结果必须是以下匹配:
src='/relative/path/img1.png'
src='/relative/path/img2.png'
src='/relative/path/img3.png'
这就是我想象的模式应该如何,但实际上对我不起作用:
$pattern = "<img([^\/]+)\/>";
最佳答案
切勿尝试使用正则表达式解析 HTML。要解析 HTML,请使用 DOM Parser 。考虑这样的代码:
$html = <<< EOF
<html><div></div><img src='/relative/path/img1.png'/></div>
<img src='/relative/path/img2.png'/><div></div></div>
<img src='/relative/path/img3.png'/><ul><li></li></ul></html>
EOF;
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html); // loads your html
$xpath = new DOMXPath($doc);
$nodelist = $xpath->query("//img");
for($i=0; $i < $nodelist->length; $i++) {
$node = $nodelist->item($i);
$src = $node->attributes->getNamedItem('src')->nodeValue;
echo "src='$src'\n";
}
输出:
src='/relative/path/img1.png'
src='/relative/path/img2.png'
src='/relative/path/img3.png'
关于php - 用于匹配 img 标签的左尖括号和右尖括号内的所有文本的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16035039/