如何在PHP中用正则表达式替换所有实际上不是空格的空格
Posted
技术标签:
【中文标题】如何在PHP中用正则表达式替换所有实际上不是空格的空格【英文标题】:How to replace all spaces which are not actually spaces with regex in PHP 【发布时间】:2017-07-22 19:07:37 【问题描述】:我有以下字符串,我想从多个空格中“清除”:
$string = "This is a test string"; //Using utf8_decode
没什么大不了的吧?但是,使用后字符串没有被“清理”:
$string = preg_replace('/\s+/', ' ', $string);
因为,字符串实际上是这样的:
$test = "This is a  test string";
那么,我该如何解决这个问题?
谢谢。
拜托,我不想替换 str_replace('Â', '')
之类的字符
【问题讨论】:
试试preg_replace('/\s+/u', ' ', $string)
Lol 英雄的速度很快吧?谢谢
@WiktorStribiżew 我不是一个 unicode 人,所以对于我的信息,Â
是一个空白字符吗?
@AbraCadaver: 不是空白字符,是一些Unicode空白字符转换成不同编码后变成的字符。
@WiktorStribiżew:非常感谢!
【参考方案1】:
您可以使用/u
UNICODE 修饰符:
$string = preg_replace('/\s+/u', ' ', $string);
/u
modifier 使 PCRE 引擎能够将字符串处理为 UTF8 字符串(通过打开PCRE_UTF8
动词)并使模式中的速记字符类能够识别 Unicode(通过启用PCRE_UCP
动词)
重点是\s
现在将匹配所有 Unicode 空格,并且输入字符串被视为 Unicode 字符串。
【讨论】:
非常感谢!我试图解决这个问题好几个小时。以上是关于如何在PHP中用正则表达式替换所有实际上不是空格的空格的主要内容,如果未能解决你的问题,请参考以下文章