我正在浏览 SO 答案,发现大多数用于替换多个空格的解决方案是:
$new_str = preg_replace("/\s+/", " ", $str);
Run Code Online (Sandbox Code Playgroud)
但在很多情况下,空格字符包括 UTF 字符,包括换行、换页、回车、不间断空格等。 这个 wiki描述了 UTF 定义了二十五个定义为空格的字符。
那么我们如何使用正则表达式替换所有这些字符呢?
传递u修饰符时,\s变为 Unicode 感知。所以,一个简单的解决方案是使用
$new_str = preg_replace("/\s+/u", " ", $str);
                             ^^
Run Code Online (Sandbox Code Playgroud)
请参阅PHP 在线演示。