有很多关于在 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。