我一直在寻找一种方法来删除字符串中多余的空格(也就是说,如果两个或更多的空格相邻,只留下1个并删除其他空格),我发现了这个Remove excess whitespace from within a string,我想使用这个解决方案:
$foo = preg_replace( '/\s+/', ' ', $foo );
但这也会删除新行,而我想保留它们。有没有办法在删除多余空格的同时保留换行符?
我一直在寻找一种方法来删除字符串中多余的空格(也就是说,如果两个或更多的空格相邻,只留下1个并删除其他空格),我发现了这个Remove excess whitespace from within a string,我想使用这个解决方案:
$foo = preg_replace( '/\s+/', ' ', $foo );
但这也会删除新行,而我想保留它们。有没有办法在删除多余空格的同时保留换行符?
4条答案
按热度按时间tf7tbtn21#
http://www.php.net/manual/en/regexp.reference.escape.php定义了
\h any horizontal whitespace character (since PHP 5.2.4)
,所以您可能正在寻找也可以显式列出要影响的所有字符
doinxwow2#
如果您的某些符号在
preg_replace
之后被转换为(例如西里尔大写字母R/ Р),请使用mb_ereg_replace
而不是preg_replace
:ulmd4ohb3#
如果你想删除多余的纯空格(不是制表符,换行符等),你可以使用十六进制代码来更具体:
nmpmafwu4#
我用这种方式来保持新的一行,并取代所有多余的连续空格与单一的空间。