PHP -删除多余的空白,但不包括新行


PHP - Remove excess Whitespace but not new lines

我正在寻找一种方法从字符串中删除多余的空白(也就是说,如果2个或更多的空格相邻,只留下1并删除其他空格),我发现这从字符串中删除多余的空白,我想使用这个解决方案:

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

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

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

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

或者你可以显式列出你想要影响的所有字符

$foo = preg_replace( '/'t +/', ' ', $foo );

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

$value = mb_ereg_replace('/'h+/', ' ', $value);

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

    $text = preg_replace('/ +/', ' ', $text);