在php

时间:2015-07-01 08:37:34

标签: php xml

我有一个奇怪的问题。我正在尝试使用DomDocumnet函数加载一些xml文档,但它会抛出一个奇怪的警告说:

警告:DOMDocument :: load():标记为UTF-16但具有UTF-8内容的文档

没有其他错误或警告等。 当我从

手动编辑xml文件时
<?xml version="1.0" encoding="utf-16"?> to

<?xml version="1.0" encoding="utf-8"?>

它完美地处理它。

我正在寻找一种解决方案,我可以在进一步处理之前编辑标题中的xml文件。

提前致谢..!

1 个答案:

答案 0 :(得分:0)

不是绝对的解决方案,而是在这种情况下解决这个问题的黑客。

在将xml文档作为字符串加载之后,在使用preg_replace函数进一步处理之前,将utf 16替换为utf8。

$source_xml_file = file_get_contents($incorrect_xml_file, TRUE);
$corrected_xml_file= preg_replace('/(<\?xml[^?]+?)utf-16/i', '$1utf-8', $source_xml_file);
$xmldoc->loadXML($corrected_xml_file);

适用于我的情况。