[翻译]  Does preg_replace() change my character set?

[CHINESE]  preg_replace()是否会更改我的字符集?


I have the following piece of code which seems to be changing my character set.

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

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

However, when I use [\t\n\r\f\v] as my pattern instead of the special character \s it works fine:

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

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

Why is that?

这是为什么?

1 个解决方案

#1


10  

I have the same problem. It is because of UTF8.

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

à is 0xc3a0 in UTF8. In PHP you can write like this: "\xc3\xa0".

à是UTF8中的0xc3a0。在PHP中你可以像这样写:“\ xc3 \ xa0”。

With PCRE the /s match 0xa0 like it was ASCII "Non-breaking space".

使用PCRE,/ s匹配0xa0,就像它是ASCII“非中断空间”。

You can use the u flag to resolve the problem.

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

$html = preg_replace("/\s/u", "", $html);

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2018 ITdaan.com 粤ICP备14056181号