Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将数据从DOMDocument传递到regexp?_Php - Fatal编程技术网

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

Php 如何将数据从DOMDocument传递到regexp?,php,Php,使用下面的代码,我从一些html中获取“img”标记,并检查它们是否被“a”标记覆盖。稍后,若当前的“img”标记不是“a”(超链接)的一部分,我想将此img标记覆盖到“a”标记中添加超链接开始结束标记加上目标设置。为此,我希望整个“img”标记html都能使用 问题是如何将“img”标记html转换为regexp。我需要一些php变量在regexp工作的地方是用???标志 $doc = new DOMDocument(); $doc->loadHTML($article_header);

使用下面的代码,我从一些html中获取“img”标记,并检查它们是否被“a”标记覆盖。稍后,若当前的“img”标记不是“a”(超链接)的一部分,我想将此img标记覆盖到“a”标记中添加超链接开始结束标记加上目标设置。为此,我希望整个“img”标记html都能使用

问题是如何将“img”标记html转换为regexp。我需要一些php变量在regexp工作的地方是用???标志

$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);

                                      }
                        }
$doc=newDOMDocument();
$doc->loadHTML($article\u header);
$imgs=$doc->getElementsByTagName('img');
foreach($imgs作为$img){
如果($img->parentNode->tagName!=“a”){
preg|U match_all(“|U”、?、$matches、preg|U模式_顺序);
}
}

您不想为此使用正则表达式。您已经有了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);
  }
}
请参阅有关的文档


可以,但我有参数要在“a”中设置。我的意思是必须将此>
更改为此>
a href=“sources/public/users/qqq/articles/2011-06-11/7/img/500.JPG”target=“\u blank”>
请参阅和。我相信你会明白的。