如何防止DOMXPath扩展HTML实体?

kla*_*ner 6 php xml xpath dom html-entities

我在PHP中使用DOMDocument和DOMXPath来查找HTML文档中的元素.此文档包含HTML实体,例如  我希望这些实体保留在XPath输出中.

$doc = new DOMDocument();
$doc->loadHTML('<html><head></head><body>&nbsp;Test</body></html>');

$xpath = new DOMXPath($doc);
$nodes = $xpath->query('//body');

foreach($nodes as $node) {
    echo $node->textContent;
}
Run Code Online (Sandbox Code Playgroud)

此代码生成以下输出(UTF-8):

[space]Test
Run Code Online (Sandbox Code Playgroud)

但我想有这个:

&nbsp;Test
Run Code Online (Sandbox Code Playgroud)

也许它与PHP在内部使用的LibXML有关,但我找不到任何保留HTML实体的函数.

你有好主意吗?

Mic*_*Kay 4

XPath 始终看到 XML 文档的表示形式,其中实体引用已被扩展。防止这种情况的唯一方法是预处理 XML 文档,用不会扩展的内容替换实体引用,例如更改&nbsp;\xc2\xa7nbsp;.

\n