如何从 xml 文件中跳过/删除无效的非 utf8 字符


How to skip/remove invalid non-utf8 characters from a xml file

我正在寻找一种从 xml 文件中删除/跳过非 utf8 字符的方法。
我正在使用 simplexml_load_string(),但是当文件具有非 utf8 字符时,我收到错误"解析器错误:CharRef:无效的十六进制值",代码如下所示:

Q7fzÕ6,¯å1òw~Ò`H-7%¨§ÃU³^Ôàƒ³‡Îá_s…“w²žrâºæºçYF#K‰àa¥²o8Îk쎻qíNž‚ËÂUeJvgXêõ»'[Hw®Èl[-&#xAEPs§æŠ§£gáRÓ„Å2Ì$ŽŽŠŽÆÁœ˜.E~Ñ°@=

而且我无法保存该XML中的信息,我正在尝试许多来自Web/StackOverflow的解决方案,没有人帮助我。
我正在尝试使用preg_replace等。
谢谢!

评论中的答案:

尝试删除/转义此文本中的与号或将其包装在 CDATA 中 块

所以我把调用函数
放在前面 simplexml_load_string($string)

$string = str_replace('&', ' ', $string); .
现在它是工作,没有 & in 字符串,所以 simplexml_load_string() 可以解析而不会出错。