2010-05-02 76 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