XML解析器在不同环境中的不同结果,为什么?

时间:2009-11-23 03:14:32

标签: php xml

<?php
$xml = <<< AAA
<test>c đưa lên 1 -&gt; 10 k</test>
AAA;
$p = xml_parser_create();
xml_parse_into_struct($p, $xml, $vals, $index);
xml_parser_free($p);
print_r($vals);

我可以得到不同的结果为什么? 在我的电脑中,结果是

Array
(
    [0] => Array
        (
            [tag] => TEST
            [type] => complete
            [level] => 1
            [value] => c đưa lên 1 -> 10 k
        )

)

在生产环境中,结果是

Array
(
    [0] => Array
        (
            [tag] => TEST
            [type] => complete
            [level] => 1
            [value] => c đưa lên 1 - 10 k
        )

)

&gt; 消失了。 为什么呢?

2 个答案:

答案 0 :(得分:3)

有时,当您切换环境时,您会看到与文本编码和其他国际化相关问题相关的一些差异。因此,您可以尝试在xml_parser_create函数中明确设置编码。

需要考虑的另一件事是PHP版本。从两个环境运行phpinfo()并检查其中的版本。可能是PHP版本的生产使用被编码为忽略HTML实体(&amp; gt;)......只是猜测。

修改
根据这个bug report,忽略HTML实体的这种行为可能是由libxml2引起的。尝试将生产服务器上的libxml2更新为最新版本。

答案 1 :(得分:0)

似乎是编码问题。