Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中将HTML实体和特殊字符转换为UTF8文本_Php_Utf 8_Decode_Html Entities_Htmlspecialchars - Fatal编程技术网

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

在PHP中将HTML实体和特殊字符转换为UTF8文本,php,utf-8,decode,html-entities,htmlspecialchars,Php,Utf 8,Decode,Html Entities,Htmlspecialchars,关于在PHP中将HTML实体和特殊字符转换为UTF8文本,有很多问题和文档。还有PHP文档本身,比如这个和这个。但是,我找不到任何函数/解决方案可以清楚地描述如何将任何HTML字符和特殊实体转换为UTF-8文本。它们都表示“如果你想这样做,那么就那样做”,等等。但没有一种解决方案表示“要有人类可以阅读的纯UTF-8文本,那么就这样做。” 我问的原因是,我真的没有测试用例。我正在读取一个数据库,它是多语言的。然而,唯一的保证是字符是HTML格式的,我需要将它们转换为UTF-8,以一种理解这些语言的

关于在PHP中将HTML实体和特殊字符转换为UTF8文本,有很多问题和文档。还有PHP文档本身,比如这个和这个。但是,我找不到任何函数/解决方案可以清楚地描述如何将任何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\u实体解码($str)结果将不是utf8。

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

html_entity_decode($str, ENT_QUOTES | ENT_HTML5, 'UTF-8');
编辑:--
它的“技巧”是第二个参数中的组合,并在第三个参数中包含编码。也就是说,如果您刚刚进行了
html\u实体解码($str)结果将不是utf8。

您是否看到=>?因此您的数据库内容包含实体?你是这么说的吗?(只是问一下,因为你实际上并没有这么说;但还是要问一个明确的答案)。或者“字符在HTML中”是什么意思?你有没有要剥掉的标签?你为什么不提供一个假设输入和预期输出的具体例子?@Fred ii-是的,我有。这有点不相关。我做了所有这些,但请注意,DB内容来自中的其他来源(即,它与我的设置无关)。唯一的保证是输入是HTML解码。我喜欢把这些输入转换成人类可以阅读的文本。谢谢。@mario-我更新了问题have you seen=>?那么您的数据库内容包含实体了吗?你是这么说的吗?(只是问一下,因为你实际上并没有这么说;但还是要问一个明确的答案)。或者“字符在HTML中”是什么意思?你有没有要剥掉的标签?你为什么不提供一个假设输入和预期输出的具体例子?@Fred ii-是的,我有。这有点不相关。我做了所有这些,但请注意,DB内容来自中的其他来源(即,它与我的设置无关)。唯一的保证是输入是HTML解码。我喜欢把这些输入转换成人类可以阅读的文本。谢谢。@mario-我更新了问题