2015-06-26 74 views
0

我有一个表单,它需要用户输入;最近,我遇到了许多用户输入和多个空格。例如, “我                                 测试                             正在                       很好!“ 有没有什么办法可以摆脱PHP级别或MySQL级别的这些空白?摆脱在php或mysql中的多个空格

  1. 显然修剪不起作用。
  2. 我正在考虑使用递归函数,但不知道是否有一个简单而快速的方法来做到这一点。

到目前为止我的代码是如下:

function noWhiteSpaces($string) { 
    if (!empty($string)) { 
     $string = trim($string); 
     $new_str = str_replace('  ', ' ', $string); 
    } else { 
     return false; 
    } 
    return $new_str; 
} 

echo noWhiteSpaces("My        tests     are working fine here       !"); 
+0

输入的实际空白('\ t','\ n',空格等)还是像' '这样的东西?有一个区别。 – Keelan

回答

0

如果输入的是实际的空格,你想用一个空格来代替它们,你可以使用一个regular expression

$stripped = preg_replace('/\s+/', ' ', $input); 

\s表示'空白'字符。 +表示一个或多个。因此,这将用一个空格替换$input中的一个或多个空白字符的每个实例。看到preg_replace() docs,和一个不错的tutorial on regexes


如果你并不想取代真正的空白,而是这样的东西 ,你可以做同样的,但不能与\s。改为:

$stripped = preg_replace('/( )+/', ' ', $input); 

请注意括号内是如何包含 的。

+0

这基本上是 我已经尝试preg_replace类似于你的建议;尽管如此,这并不能完全消除空白。谢谢! – phpfreak

+0

@phpfreak我已经更新了答案。下一次,请清楚。 – Keelan

+0

它的工作原理!谢谢! – phpfreak