2010-05-02 105 views
2

當事情變得越來越有實體中的nodeValue一個的DOMNode對象的nodeValue(即& GT;),然後將其轉換實體到它的打印字符(即>)PHP的DOMNode實體的nodeValue

有誰知道一種讓它保持爲實體的方式,當它轉換爲意想不到的事情時,它真的會攪亂字符串比較。

下面的代碼重新你會發現轉儲的長度的問題是3時,它應該是6.

<?php 
$xml='<?xml version="1.0"?> 
<root> 
<element>&gt;</element> 
</root>'; 
$a=new DOMDocument(); 
$a->loadXML($xml); 
var_dump($a->childNodes->item(0)->nodeValue); 

回答

5

loadXML()需要一個options參數,其中一個選項是LIBXML_NOENT,這使得能夠將實體到它們的表示,所以默認loadXML()不應該這樣做。但是,libxml中似乎存在一個導致它一直髮生的錯誤,根據this bug report

+0

感謝你的這一點,可惜它是一個錯誤,看起來像我必須通過htmlentities來運行我的比較。 – Rwky 2010-05-02 04:51:28

+0

令人驚歎! 5年過去了,這仍然是一個問題(Debian 6)。 LTS是否意味着它不能解決這樣的問題,還是有很多依賴於這個bug的代碼? – Opux 2016-01-27 15:30:20