【问题标题】:printing out html content from domelement using nodeValue使用 nodeValue 从 domelement 打印出 html 内容
【发布时间】:2011-06-12 10:32:43
【问题描述】:

我在 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”出来了。为什么我无法打印出图像?

【问题讨论】:

标签: php


【解决方案1】:

你可以使用:

DOMDocument::saveXML($img);

来自 PHP 文档的 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>) 元素的情况,不应该 不过是个问题。

【讨论】:

  • 很可能您希望我从该图像标签中获取源代码,但我想要的是取回整个“img”标签html。这就是为什么我尝试使用 ->nodeValue 但没有任何反应
  • @Michael 对不起,我在这些问题上是个菜鸟,你能修改我的例子以便打印出来吗?
猜你喜欢
  • 2011-05-11
  • 2014-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
相关资源
最近更新 更多