【发布时间】:2011-05-15 09:47:57
【问题描述】:
我在 PHP 中使用 DOMDocument 和 DOMXPath 来查找 HTML 文档中的元素。 该文档包含 HTML 实体,例如   ;我希望这些实体保留在 XPath 输出中。
$doc = new DOMDocument();
$doc->loadHTML('<html><head></head><body> Test</body></html>');
$xpath = new DOMXPath($doc);
$nodes = $xpath->query('//body');
foreach($nodes as $node) {
echo $node->textContent;
}
此代码产生以下输出 (UTF-8):
[space]Test
但我想要这个:
Test
也许它与 PHP 内部使用的 LibXML 有关,但我找不到任何保留 HTML 实体的函数。
你有什么想法吗?
【问题讨论】:
-
[space]不是 UTF-8。你确定是 U+0020 而不是 U+00A0? -
@Alohci:是的,你是对的,它是 U+00A0。我只是想澄清一下,输出显示的是空格而不是 nbsp 实体。
-
@Dimitre:抱歉,这是一个特定于 XPath 的问题。这是关于 XPath 查询的输出。
-
我不知道,但是使用 SimpleXML 你可以做到 $xml = html_entity_decode($xml, ENT_NOQUOTES, 'UTF-8'); (php.net/manual/en/simplexmlelement.asxml.php#107137)
标签: php xml dom xpath html-entities