在PHP中将HTML实体和特殊字符转换为UTF8文本

时间:2014-08-18 21:09:13

标签: php utf-8 decode html-entities htmlspecialchars

关于在PHP中将HTML实体和特殊字符转换为UTF8文本有很多问题和文档。此外还有PHP文档本身,例如此htmlspecialchars_decode()和此html_entity_decode()。但是,我找不到任何明确描述如何将任何HTML字符和特殊实体转换为UTF-8文本的功能/解决方案。所有这些都表示“如果你想这样做,然后那样做”,等等。但是没有任何解决方案表明“拥有可由人类阅读的纯UTF-8文本,然后执行此操作”。

我问的原因是,我真的没有测试用例。我正在读一个数据库,它是多语言的。然而,唯一的保证是角色是HTML格式,我需要将它们转换为UTF-8,其方式可以由了解这些语言的人阅读。现在,我该怎么做?清理/解码输入的正确方法是什么,所以它是纯文本?

感谢。


更新

这是一个更新,因为从评论中可以清楚地看出我没有正确地提出这个问题。我的DB包含文本。我想将该文本(包含HTML实体和特殊字符)转换为我可以在网页上显示给最终用户的UTF-8文本。数据库中的这个文本用多种语言(如法语,阿拉伯语,英语等)编写。所有这些都可以包含特殊字符的HTML实体。那么如何将所有这些转换为UTF-8文本,这些文本可以被理解这些语言的人阅读?我喜欢删除这些特殊字符并将其转换为人类可以阅读的内容。

1 个答案:

答案 0 :(得分:3)

这适用于我将实体解码为utf8:

html_entity_decode($str, ENT_QUOTES | ENT_HTML5, 'UTF-8');

编辑: - "技巧"它是第二个参数中的组合,包括第三个参数中的编码。也就是说,如果你刚刚html_entity_decode($str);,结果将不是utf8。