使用nodeValue从domelement打印出html内容

时间:2011-06-12 10:32:44

标签: php

我在html中有图像。我将它解析为DOMDocument并开始使用它......

$doc = new DOMDocument();
$doc->loadHTML($article_header);

$imgs = $doc->getElementsByTagName('img');
foreach ($imgs as $img) {
$container = $img->parentNode;

if ($container->tagName != "a") { 
    $image_inside=utf8_decode($img->nodeValue);
    echo "3".$image_inside;
    die;
}
}

此代码工作正常3行获取图像。第6行知道在这个“img”标签上面没有“a”标签,第8行必须打印出我的初始图像。但问题是我只看到没有图像标签等的“3”......

我确实检查了元素,没有任何东西存在。只是“3”即将问世。为什么我无法打印图像?

1 个答案:

答案 0 :(得分:6)

您可以使用:

DOMDocument::saveXML($img);

来自PHP Documetation的saveXML()

$doc = new DOMDocument();
$doc->loadHTML($article_header);

$imgs = $doc->getElementsByTagName('img');
foreach ($imgs as $img) {
    $container = $img->parentNode;

    if ($container->tagName != "a") { 
       echo utf8_decode($doc->saveXML($img));
       die;
    }
}

如果您使用的是PHP 5.3.6,则可以使用(来自How to return outer html of DOMDocument?

$doc->saveHtml($img);

请注意链接问题中提到的警告:

  

(...)使用saveXml(),但那样会   创建符合XML的标记。在里面   <a>(<img>)元素的情况,不应该   不过是个问题。

相关问题