7

我有以下代码似乎正在改变我的字符集。

     $html = "à";
     echo $html;  // result: à
     $html = preg_replace("/\s/", "", $html);
     echo $html;  // result: ?

但是,当我[\t\n\r\f\v]用作我的模式而不是特殊字符\s时,它可以正常工作:

     $html = "à";
     echo $html;  // result: à
     $html = preg_replace("/[\t\n\r\f\v]/", "", $html);
     echo $html;  // result: à

这是为什么?

4

1 回答 1

16

我也有同样的问题。这是因为UTF8。

à0xc3a0UTF8。在 PHP 中你可以这样写:"\xc3\xa0".

使用 PCRE,/s匹配0xa0就像 ASCII“不间断空格”一样。

您可以使用u标志来解决问题。

$html = preg_replace("/\s/u", "", $html);
于 2013-10-28T08:33:49.710 回答