PHP 解析问题 - 和
2022-08-30 19:55:57
当我尝试解析一些洒在它上面的html,然后它时,“变成”这个字符:Â.而且,并且不会改变它。
echo
html_entity_decode()
str_replace()
为什么会发生这种情况?如何删除?
当我尝试解析一些洒在它上面的html,然后它时,“变成”这个字符:Â.而且,并且不会改变它。
echo
html_entity_decode()
str_replace()
为什么会发生这种情况?如何删除?
UTF-8 中存在两个字节的不间断空格:和 。0xC2
0xA0
当这些字节以ISO-8859-1(单字节编码)而不是UTF-8(多字节编码)表示时,这些字节分别成为字符和另一个不间断空格。Â
显然,您正在使用UTF-8解析HTML,并使用ISO-8859-1回显结果。要解决此问题,您需要使用 ISO-8859-1 解析 HTML 或使用 UTF-8 回显结果。我建议一直使用 UTF-8。浏览 PHP UTF-8 备忘单以将其全部对齐。
html_entity_decode(" ") == '\xa0'
我认为从设计上讲,我不明白为什么str_replace不适合你,试试这个片段:
$nbsp = html_entity_decode(" ");
$s = html_entity_decode("[ ]");
$s = str_replace($nbsp, " ", $s);
echo $s;
也许 \xa0 它不是一个有效的 unicode 字符串,因此使用 html_entity_decode() 的结果可能更适合文本替换而不是 \xa0。
BalusC的解释看起来似乎很合理,你可以尝试在然后尝试将其显示为拉丁语而不是utf8中插入utf-8 \xc2\xa0,如果你想使用unicode的东西,你应该在任何地方保持utf-8编码,从服务器的字符集到db,因为你在使用时会遇到同样的问题,例如。à