规范化字符串中的空格?

时间:2013-02-25 16:17:57

标签: php

我需要规范化字符串中的空格:

  1. 删除多个相邻的空格
  2. 删除字符串开头和结尾处的空格
  3. E.g。 " my name is " => my name is

    我试过

    str_replace('  ',' ',$str);
    

    我也试过了php Replacing multiple spaces with a single space,但这也没有用。

4 个答案:

答案 0 :(得分:12)

用一个空格替换任何出现的2个或更多空格,并修剪:

$str = preg_replace('/ {2,}/', ' ', trim($input));

注意:在这里使用空白字符类\s是一个相当糟糕的主意,因为它会匹配换行符和您可能不期望的其他空格。

答案 1 :(得分:0)

你应该尝试preg_replace! (假设您理解正则表达式,对于这种情况应该不是很复杂)。

http://www.php.net/manual/en/function.preg-replace.php

答案 2 :(得分:0)

使用正则表达式

$text = preg_replace("~\\s{2,}~", " ", $text);

答案 3 :(得分:0)

\s方法也会删除换行符,并且/ {2,}/方法会在换行符后的行尾忽略制表符和空格。

如果您想保存换行符并获得更准确的结果,我建议this impressive answer to similar questionthis improvement of the previous answer。根据他们的说明,你的问题的答案是:

$norm_str = preg_replace('/[^\S\r\n]+/', ' ', trim($str));

简而言之,这是利用双重否定。阅读链接以深入解释这个技巧。