Php 如何在$node中获取html,而不仅仅是$nodeValue 对当前情况的说明:

Php 如何在$node中获取html,而不仅仅是$nodeValue 对当前情况的说明:,php,dom,glob,nodevalue,Php,Dom,Glob,Nodevalue,我有一个满是页面的文件夹(pages文件夹),文件夹中的每一页都有一个div,其中包含id=“short info” 我有一个代码,可以从该文件夹中提取所有…,并使用textContent(其目的与nodeValue相同) 加载div的代码: 您必须在节点上进行未记录的调用 $node->c14n()将为您提供$node中包含的HTML 疯狂吧?我在那件事上掉了一些头发 更新 这将修改html以符合严格的html。最好使用 $html=$Node->ownerDocument->saveHTM

我有一个满是页面的文件夹(pages文件夹),文件夹中的每一页都有一个div,其中包含
id=“short info”

我有一个代码,可以从该文件夹中提取所有
,并使用
textContent
(其目的与
nodeValue
相同)

加载div的代码:


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

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

疯狂吧?我在那件事上掉了一些头发

更新

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

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


相反。

您需要的是“innerHTML”,PHP的dom不直接支持它。PHP文档中有一个解决方法

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

<?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;
            }
        }
}
?>