我需要规范化字符串中的空格:
- 删除多个相邻空格
- 删除字符串开头和结尾的空格
例如" my name is "
=>my name is
我试过了
str_replace(' ',' ',$str);
我还尝试了 php 用一个空格替换多个空格,但这也没有用。
我需要规范化字符串中的空格:
例如" my name is "
=>my name is
我试过了
str_replace(' ',' ',$str);
我还尝试了 php 用一个空格替换多个空格,但这也没有用。
用一个空格替换任何出现的 2 个或更多空格,并修剪:
$str = preg_replace('/ {2,}/', ' ', trim($input));
注意:在\s
这里使用空白字符类是一个相当糟糕的主意,因为它会匹配换行符和您可能不期望的其他空白。
使用正则表达式
$text = preg_replace("~\\s{2,}~", " ", $text);
该\s
方法也去除了换行符,并且/ {2,}/
方法在换行符之后忽略了行首的制表符和空格。
如果您想保存换行符并获得更准确的结果,我建议对类似问题提出这个令人印象深刻的答案,以及对先前答案的改进。根据他们的说明,您的问题的答案是:
$norm_str = preg_replace('/[^\S\r\n]+/', ' ', trim($str));
简而言之,这是利用双重否定。阅读链接以深入了解该技巧。