PHP解析问题-&;nbsp;和Â;

PHP解析问题-&;nbsp;和Â;,php,html,parsing,character-encoding,Php,Html,Parsing,Character Encoding,当我试图解析一些散播了的html,然后回显它时,会变成“this character:。而且,html\u entity\u decode()和str\u replace()不会改变它 为什么会这样?如何删除?两个字节中的存在:0xC2和0xA0 当这些字节以(单字节编码)而不是UTF-8(多字节编码)表示时,这些字节分别成为字符和另一个不间断空格 显然,您正在使用UTF-8解析HTML,并使用ISO-8859-1回送结果。要解决此问题,您需要使用ISO-8859-1解析HTML或使用UTF-8

当我试图解析一些散播了
的html,然后
回显它时,
会变成“this character:。而且,
html\u entity\u decode()
str\u replace()
不会改变它

为什么会这样?如何删除?两个字节中的存在:
0xC2
0xA0

当这些字节以(单字节编码)而不是UTF-8(多字节编码)表示时,这些字节分别成为字符
和另一个不间断空格

显然,您正在使用UTF-8解析HTML,并使用ISO-8859-1回送结果。要解决此问题,您需要使用ISO-8859-1解析HTML或使用UTF-8回显结果。我建议一直使用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解释看起来似乎有道理,您可以尝试在中插入utf-8\xc2\xa0,然后尝试将其显示为拉丁语而不是utf8,如果您想使用unicode,您应该在从服务器的字符集到数据库的任何地方都保留utf-8编码,因为在使用例如
à

也可以实现以下功能:

preg_replace("/&#?[a-z0-9]{2,8};/i","", $var);
它“转动”或被浏览器解释为这样?