PHP将unicode空间转换为ascii空格

Kai*_*Kai 6 php unicode mbstring

所以我遇到了一个问题,我相信正在发生的事情是我正在接收使用一些unicode空间和一些ascii空间的数据,这样看起来相同的某些字符串并不相同,例如"防水"!="防水".这些字符串在我的数据库中显示不同,但是,当存在多字节字符时,通常会看到奇怪的字符:"防水"和"防水".

我想要一种方法使所有空格都是ascii空格,或者如果更容易,所有空格都是多字节空格.

我已经尝试过使用preg_replace,但是这些字符串不再像有效的多字节字符串那样读取了.(字符串中的多字节字符将显示为垃圾).

preg_replace('/[\pZ\pC]/',' ',$field);
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用mb_ereg_replace,但它没有效果.

mb_ereg_replace('/[\pZ\pC]/',' ',$field)
Run Code Online (Sandbox Code Playgroud)

Rob*_*ans 8

如果您需要,可以使用标准的ascii空间查找并替换它们:

$string = str_replace("\xc2\xa0", "\x20", $string);
Run Code Online (Sandbox Code Playgroud)


Kai*_*Kai 5

它看起来preg_replace('/[\pZ\pC]/u',' ',$field);有效(忘记了正则表达式末尾的 u)