我正在寻找一种从字符串中删除多余空格的方法(也就是说,如果 2 个或更多空格彼此相邻,则只保留 1 个并删除其他空格),我发现这个Remove extra whitespace from within a string and I want使用此解决方案:
$foo = preg_replace( '/\s+/', ' ', $foo );
但这也会删除新行,而我想保留它们。有没有办法在删除多余空格的同时保留换行符?
我正在寻找一种从字符串中删除多余空格的方法(也就是说,如果 2 个或更多空格彼此相邻,则只保留 1 个并删除其他空格),我发现这个Remove extra whitespace from within a string and I want使用此解决方案:
$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+/', ' ', $foo );
示例:http: //ideone.com/NcOiKW
如果您想删除多余的唯一空格(不是制表符、换行符等),您可以使用 HEX 代码更具体:
$text = preg_replace('/\x20+/', ' ', $text);
如果您的某些符号在之后转换为 � preg_replace
(例如,西里尔大写字母R / Р),请使用以下mb_ereg_replace
代替preg_replace
:
$value = mb_ereg_replace('/\h+/', ' ', $value);