<?php
$xml = <<< AAA
<test>c đưa lên 1 -> 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; 消失了。 为什么呢?
答案 0 :(得分:3)
有时,当您切换环境时,您会看到与文本编码和其他国际化相关问题相关的一些差异。因此,您可以尝试在xml_parser_create函数中明确设置编码。
需要考虑的另一件事是PHP版本。从两个环境运行phpinfo()
并检查其中的版本。可能是PHP版本的生产使用被编码为忽略HTML实体(&amp; gt;)......只是猜测。
修改强>
根据这个bug report,忽略HTML实体的这种行为可能是由libxml2引起的。尝试将生产服务器上的libxml2更新为最新版本。
答案 1 :(得分:0)
似乎是编码问题。