如何将数据从DOMDocument传递到regexp?

时间:2011-06-12 09:39:29

标签: php

使用以下代码,我从某些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);

                                      }
                        }

1 个答案:

答案 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);
  }
}

参见

上的文档