使用以下代码,我从某些html中获取“img”标签,并检查它们是否包含“a”标签。稍后,如果当前“img”标签不是“a”(超链接)的一部分,我想要将此img标签覆盖为“a”标签,添加超链接开始结束标记加设置到目标。为此,我希望整个“img”标签html可以使用。
问题是如何将“img”标签html转移到regexp中。我需要在regexp中使用一些php变量来处理该地方标有???迹象。
$doc = new DOMDocument();
$doc->loadHTML($article_header);
$imgs = $doc->getElementsByTagName('img');
foreach ($imgs as $img) {
if ($img->parentNode->tagName != "a") {
preg_match_all("|<img(.*)\/>|U", ??? , $matches, PREG_PATTERN_ORDER);
}
}
答案 0 :(得分:2)
您不想为此使用正则表达式。您已经拥有了DOM,因此请使用它:
foreach ($imgs as $img) {
$container = $img->parentNode;
if ($container->tagName != "a") {
$a = $doc->createElement("a");
$a->appendChild( $img->cloneNode(true) );
$container->replaceChild($a, $img);
}
}
参见
上的文档