我需要规范化字符串中的空格:
- 删除多个相邻空间
- 删除字符串开头和结尾的空格
例如" 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));
简而言之,这是在利用双重否定。阅读链接以获得对该技巧的深入解释。