我正在寻找一种方法来从字符串中移除多余的空格(即,如果两个或更多的空格相邻,只保留一个并删除其他空格),我找到了这篇从字符串中去掉额外空白,我想使用这个解决方案:
$foo = preg_replace( '/\s+/', ' ', $foo );
但是这样也会删除换行符,而我想保留它们。有没有办法在去除多余空格的同时保留换行符?
我正在寻找一种方法来从字符串中移除多余的空格(即,如果两个或更多的空格相邻,只保留一个并删除其他空格),我找到了这篇从字符串中去掉额外空白,我想使用这个解决方案:
$foo = preg_replace( '/\s+/', ' ', $foo );
但是这样也会删除换行符,而我想保留它们。有没有办法在去除多余空格的同时保留换行符?
http://www.php.net/manual/zh/regexp.reference.escape.php
定义了\h 任何水平空白字符(自 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);
如果你想要移除多余的空格(不包括制表符、换行等),你可以使用十六进制代码来更加具体:
$text = preg_replace('/ +/', ' ', $text);
\x20
)空格。 - Piskvor left the building
\s
替换为一个空格?如果您还想删除制表符,请使用/[\t ]+/
。 - HamZa