只是一个小问题,但我注意到如果我的xml的第一行有encoding="Latin-1"
,那么php simplexml和dom将抛出错误并拒绝导入。我做了一个解决方法,我将xml作为字符串和正则表达式encoding="Latin-1"
导入encoding="ISO-8859-1"
,然后加载到对象中,然后不会抛出错误,但我想知道是否还有更多优雅的解决方案?最好是dom对象内部的东西,所以我只能从文件名中导入。
答案 0 :(得分:0)
要使用simple_xml和其他php xml函数和类,使用UTF-8编码xml,请使用utf8_encode(xmlstring)。如果你的xml有一个简单的英文字符串没有特殊的字符ú,í,á,ü等等,你就可以使用而无需重新编码,但是如果你有这些字符或类似的字符,你需要使用编码使用utf8_encode
答案 1 :(得分:0)
对于任何感兴趣的人,这是解决方法的代码:
if ($xml_file_handle = fopen($xml_file_path, "r")) {
$xml_data = fread($xml_file_handle, filesize($xml_file_path));
fclose($file_handle);
$xml_data = preg_replace("/encoding=\"Latin-1\"/i", "encoding=\"ISO-8859-1\"", $xml_data);
$dom = new DOMDocument();
$dom->loadXML($xml_data);
// Do stuff with $dom
}