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