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

PHP-删除多余的空白,但不删除新行,php,regex,newline,whitespace,trim,Php,Regex,Newline,Whitespace,Trim,我在寻找一种从字符串中删除多余空格的方法(即,如果两个或多个空格相邻,则只保留1个空格并删除其他空格),我发现了这一点,并希望使用此解决方案: $foo = preg_replace( '/\s+/', ' ', $foo ); 但这也会删除新行,而我希望保留它们。 有没有办法在删除多余空格的同时保留换行符? 定义\h 任何水平空白字符(自PHP 5.2.4起) 所以你可能正在寻找 $foo=preg_replace('/\h+/',''$foo) 示例:如果您只想删除多余的空格(而不是制表符

我在寻找一种从字符串中删除多余空格的方法(即,如果两个或多个空格相邻,则只保留1个空格并删除其他空格),我发现了这一点,并希望使用此解决方案:

$foo = preg_replace( '/\s+/', ' ', $foo );
但这也会删除新行,而我希望保留它们。 有没有办法在删除多余空格的同时保留换行符?

定义
\h
任何水平空白字符(自PHP 5.2.4起)
所以你可能正在寻找

$foo=preg_replace('/\h+/',''$foo)


示例:

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

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

如果您的某些符号已转换为� 在
preg\u replace
之后(例如,西里尔字母大写字母R/j2),使用
mb\u ereg\u replace
代替
preg\u replace

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

是否将
\s
替换为空格?如果您还想删除制表符,那么请使用
/[\t]+/
我认为这是错误的,因为它删除了所有空格:)为了保留换行符,您可以做一个变通方法,例如按换行符将所有字符串拆分为数组,清理每个部分并按换行符再次内爆。有许多空格字符不是ASCII 32(
\x20
)空格。