如何在$node中获取html,而不仅仅是$nodeValue



现状描述:

我有一个充满页面的文件夹(pages-folder),该文件夹中的每个页面(除其他外)都有一个带有id="short-info"的div。
我有一个代码,从该文件夹中拉出所有的<div id="short-info">...</div>,并通过使用textContent(这是出于这个目的,与nodeValue相同)显示其中的文本

加载div的代码:

<?php
$filename = glob("pages-folder/*.php");
sort($filename);
foreach ($filename as $filenamein) {
    $doc = new DOMDocument();
    $doc->loadHTMLFile($filenamein);
    $xpath = new DOMXpath($doc);
    $elements = $xpath->query("*//div[@id='short-info']");
        foreach ($elements as $element) {
            $nodes = $element->childNodes;
            foreach ($nodes as $node) {
                echo $node->textContent;
            }
        }
}
?>

现在的问题是,如果我正在加载的页面有一个子,像图像:<div id="short-info"> <img src="picture.jpg"> Hello world </div>,输出将只有Hello world而不是图像,然后Hello world

问题:

我如何使代码显示完整的html内div id="短信息",包括例如图像,而不仅仅是文本?

必须在节点上进行未记录的调用。

$node->c14n()将提供$node中包含的HTML。

疯狂对吧?我的头发都掉光了

http://php.net/manual/en/class.domnode.php # 88441

更新

这将修改html以符合严格的html。最好使用

$html = $Node->ownerDocument->saveHTML( $Node );

您需要相当于'innerHTML'的内容,PHP的dom不直接支持。在PHP文档中有一个解决方法。

另一种选择是使用找到的$node,将其作为新DOM文档的顶级元素插入,然后在该新文档上调用saveHTML()

相关内容

  • 没有找到相关文章

最新更新