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


Convert HTML entities and special characters to UTF8 text in PHP

有很多关于在PHP中将HTML实体和特殊字符转换为UTF8文本的问题和文档。还有PHP文档本身,比如这个htmlspecialchars_decode()和这个html_entity_decode()。然而,我找不到任何函数/解决方案,清楚地描述了如何将任何HTML字符和特殊实体转换为UTF-8文本。他们都说"如果你想做这个,那就做那个"之类的话。但是没有任何解决方案声明"具有人类可以阅读的纯UTF-8文本,然后执行"。

我问的原因是,我真的没有测试用例。我正在阅读一个数据库,它是多语言的。然而,唯一的保证是字符是HTML格式的,我需要将它们转换为UTF-8,以一种能够被理解这些语言的人阅读的方式。我要怎么做呢?什么是正确的方式来处理/解码输入,使其成为纯文本?

谢谢。


更新

这里有一个更新,因为从评论中可以清楚地看出我没有正确地问这个问题。我的数据库包含文本。我想将该文本(包含HTML实体和特殊字符)转换为可以在网页上显示给最终用户的UTF-8文本。数据库中的文本是用多种语言(如法语、阿拉伯语、英语等)编写的。所有这些都可以包含用于特殊字符的HTML实体。那么,如何将所有这些转换为懂这些语言的人可以阅读的UTF-8文本呢?我喜欢去掉那些特殊的字符,把它们转换成人类可以读懂的东西。

这适用于我解码实体utf8:

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

编辑:—它的"诀窍"是第二个参数中的组合,并包括第三个参数中的编码。也就是说,如果您只执行html_entity_decode($str);,结果将不会是utf8。