PHP - 删除多余的空格,但不删除新行

时间:2013-05-24 00:10:51

标签: php regex newline whitespace trim

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

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

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

3 个答案:

答案 0 :(得分:20)

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:3)

如果您的某些符号在 preg_replace 之后被转换为 �(例如,西里尔大写字母 R / Р),请使用 mb_ereg_replace 而不是 preg_replace :

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