带解码实体的SimpleXML

时间:2013-08-07 13:46:21

标签: php xml simplexml xml-entities

如何使用SimpleXML在PHP中用各自的字符替换HTML / XML实体?

假设在字符串中包含此XML文档:

$data = '<?xml version="1.0" encoding="ISO-8859-1"?><example>Tom &amp; Jerry</example>'

显然,我希望SimpleXml将&amp;解码为&。它默认情况下不会这样做。我尝试了这两种方法,但都没有效果:

$xml = new SimpleXMLElement($data);
$xml = new SimpleXMLElement($data, LIBXML_NOENT);

解码XML实体的最佳方法是什么?我想XML解析器应该这样做,我想避免在解析之前运行html_entity_decode(实际上,它也不会工作)。这可能是字符串编码的问题吗?如果是这样,我该如何跟踪和修复它?

1 个答案:

答案 0 :(得分:0)

我不知道在某些情况下这是否会起作用,但也许......

$xml = new SimpleXMLElement(html_entity_decode($data));

http://www.php.net/manual/en/function.html-entity-decode.php