php cant use simplexml_load_file with special characters

68bkxrlz  于 2023-03-28  发布在  PHP
关注(0)|答案(1)|浏览(87)

我想在我的php项目中使用simplexml_load_file()方法接收xml。
但是当我从URL得到的XML包含特殊字符时,我得到错误:

Warning: simplexml_load_file(): https://www....: parser error : Entity 'Eacute' not defined

其中一个xml标记包含以下文本:

Émonda SL 5

有什么方法可以避免这个错误吗?我没有访问这些xml文件的权限,所以我不能在CDATA标记之间放置文本。

snvhrwxg

snvhrwxg1#

你可以在简单的xml处理之前用slug替换&符号,但是你需要在使用它之前取消slug。

$xmlObj = readXml($xml);
echo decodeXml($xmlObj->bicycleModel);

function readXML($xmlStr){
    $xmlStr = str_replace("&", "{{entity}}", $xmlStr);
    return simplexml_load_string($xmlStr);
}

function decodeXml($xmlNode){
    $str = str_replace("{{entity}}", "&", (string) $xmlNode);
    $str = html_entity_decode($str);
    return $str;
}

https://3v4l.org/WBUGt#v8.2.4

相关问题