簡體   English   中英

如何防止DOMXPath擴展HTML實體?

[英]How to prevent DOMXPath from expanding 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;
}

此代碼生成以下輸出(UTF-8):

[space]Test

但我想有這個:

&nbsp;Test

也許它與PHP在內部使用的LibXML有關,但我找不到任何保留HTML實體的函數。

你有好主意嗎?

XPath始終會看到已擴展實體引用的XML文檔的表示形式。 防止這種情況的唯一方法是預處理XML文檔,用不會擴展的東西替換實體引用,例如更改&nbsp; §nbsp;

XPath處理器不知道是否將非制動空格字符指定為&nbsp; 或作為&#xA0;' -- the character is always provided to it as a character entity -- &#xA0;' -- the character is always provided to it as a character entity -- `。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM