gpt4 book ai didi

htmlentities 的 PHP XMLReader 问题

转载 作者:搜寻专家 更新时间:2023-10-31 20:51:18 24 4
gpt4 key购买 nike

我正在使用此处描述的方法 (How to use XMLReader in PHP?) 处理外部 xml 文档,但我遇到了这个错误:

...parser error : Entity 'Atilde' not defined in...

和类似的,比如

cent, acirc, not

错误发生在 $z->expand() 函数上。如果我将其注释掉,它会出现在 $z->next() 函数上。

我知道问题字段并在扩展之前尝试使用 base64_encode 对其进行编辑,但它是只读的。

编辑:问题字符串是:

...ââ¬Â...

结束编辑

感谢您提供的任何帮助。

最佳答案

XML does only know the entities lt, gt, amp, apos, and quot.所以任何其他 entity reference会引发错误。 (注意 character references 和实体引用不一样。)

您可以使用 strtr转换 XML 中未知的任何 HTML 实体引用:

$trans = array_map('utf8_encode', array_flip(array_diff(get_html_translation_table(HTML_ENTITIES), get_html_translation_table(HTML_SPECIALCHARS))));
$output = strtr($input, $trans);

get_html_translation_table返回一个数组,用于将字符映射到实体引用。 get_html_translation_table(HTML_ENTITIES) 返回所有实体的映射,而 get_html_translation_table(HTML_SPECIALCHARS) 仅返回上述实体。 array_diff会有所不同,因此所有没有上述实体的实体。 array_flip 反转键/值关联并应用 array_maputf8_encode会将值从 ISO 8859-1 转换为 UTF-8。

关于htmlentities 的 PHP XMLReader 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7272938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com