2011-08-16 64 views
0

我需要從應用程序中的玩家用戶名中刪除多餘的空格(字母之間不止一次空格),並用一個空格替換它們。我不介意有單個空格的用戶,但我需要刪除多個彼此相鄰的空格。目前我這樣做:替換多餘的空格

$replace_array=array(' ',' ',' ','  ','  ','  ','  ','    ','   ','   ','   ','    ','    ','    '); 
$fill_array=array('','','','','','','','','','','','','',''); 

$user_name=str_replace($replace_array,$fill_array,trim($_POST['name'])); 
$user_name=preg_replace('/[^a-zA-Z0-9 ]/','',$user_name); 

這似乎完全不必刪除多餘的空格。 preg_replace函數是否可以處理多餘的空格?如果不是,我該怎麼做來簡化我的代碼的這部分。

謝謝!

+0

的可能重複[刪除多個空格在PHP(http://stackoverflow.com/questions/2326125/remove-multiple-whitespaces-in-php) –

回答

6
preg_replace('/\s+/', ' ', $string); 
+0

如何我會結合我當前的preg_replace函數這一個?我需要更多地研究這個功能。 – Phillip

+0

'$ user_name = preg_replace('/ \ s + /','',$ user_name);',然後照常執行第二個preg_replace。混合具有不同目的的正則表達式通常最終會讓你陷入困境,所以要將它們分開。 –

+0

非常感謝!我會盡可能接受。 – Phillip

1

有1個或更多的空間,並通過1個空格替換:

preg_replace('/\s+/',' ',$user_name) 

您也可以使用1預浸替換聲明

$user_name=preg_replace('/([^a-zA-Z0-9 ]|\s+)/','',$user_name); 
0

嘗試的preg_replace這樣的:

preg_replace('/\s{2,}/', ' ', $str); 
0

我的理解是,簡單地使用str_replace(' ', '')將解決您的問題。它取代了空間的多個發生。你有沒有嘗試過使用ltrim?