11

我正在寻找一种从字符串中删除多余空格的方法(也就是说,如果 2 个或更多空格彼此相邻,则只保留 1 个并删除其他空格),我发现这个Remove extra whitespace from within a string and I want使用此解决方案:

$foo = preg_replace( '/\s+/', ' ', $foo );

但这也会删除新行,而我想保留它们。有没有办法在删除多余空格的同时保留换行符?

4

3 回答 3

27

http://www.php.net/manual/en/regexp.reference.escape.php 定义\h any horizontal whitespace character (since PHP 5.2.4) 所以可能你正在寻找

$foo = preg_replace( '/\h+/', ' ', $foo );

示例:http: //ideone.com/NcOiKW

于 2013-05-24T01:26:27.833 回答
5

如果您想删除多余的唯一空格(不是制表符、换行符等),您可以使用 HEX 代码更具体:

    $text = preg_replace('/\x20+/', ' ', $text);
于 2014-04-10T19:18:20.273 回答
4

如果您的某些符号在之后转换为 � preg_replace(例如,西里尔大写字母R / Р),请使用以下mb_ereg_replace代替preg_replace

$value = mb_ereg_replace('/\h+/', ' ', $value);
于 2021-05-13T23:23:04.180 回答