2015-06-26 108 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