如何将数据从DOMDocument传递给正则表达式?

如何将数据从DOMDocument传递给正则表达式?

问题描述:

使用下面的代码我从一些html中获得“img”标签,并检查它们是否覆盖了“a”标签。稍后,如果当前的“img”标签不是“a”(超链接)的一部分,我想将此img标签覆盖到“a”标签中,并添加超链接开始结束标签并将设置设置为目标。为此,我希望整个“img”标签html可以使用。如何将数据从DOMDocument传递给正则表达式?

问题是如何将“img”标记html转换为正则表达式。我需要在正则表达式中使用一些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); 

             } 
         } 

你不想为此使用正则表达式。你已经有一个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); 
    } 
} 

见有关

+0

确定,但我有PA以“a”为单位设置。我的意思是这个>''必须改成这个>'a href =“sources/public/users/qqqqqq/articles/2011-06-11/7/img/500.JPG”target =“_ blank”>500.JPG ' – David 2011-06-12 10:07:37

+0

请参阅['DOMElement :: setAttribute'](http://www.php.net/manual/en/domelement.setattribute.php)和['DOMElement :: getAttribute'](http://www.php。净/手动/ EN/domelement.getattribute.php)。我相信你会知道这一点。 – Tomalak 2011-06-12 10:08:55

+0

好的,我会试试这个 – David 2011-06-12 10:09:46