2014-09-23 93 views
1

我想要一個php代碼來阻止用戶在drupal的用戶名註冊字段中使用多個空格。如何通過preg_match防止用戶多次使用空間?

用戶註釋不應包含多個空格。

請幫助

+1

難道不是一個空間?或者不止一個重要空間? (即「用戶名」與「用戶名」)其中「Foo Bar」可以接受,但「Foo Bar Foo」不會 - 並且「Foo Bar」和「Foo Bar」被認爲是相同的,並且「Foo Bar Foo 「仍然會被拒絕。 – 2014-09-24 00:57:01

回答

2

你想要做的第一件事就是用trim()

裝飾 - 帶空格(或其它字符)從字符串的開頭和結尾

確實你想接受使用者名稱,例如'Adam Sinclair ',並在開頭或結尾處留出空格。該功能將刪除它們。

然後通過使用preg_match()

$pattern = '/().*()/'; 
$username = 'Wrong Username containing more than one space'; 
if ($ret = preg_match($pattern, $username)) 
    echo 'Wrong username\n'; 
else if ($ret !== false) 
    echo 'Good username\n'; 

$username = 'Adam Sinclair'; 
if (preg_match($pattern, $username)) 
    echo 'Wrong username\n'; 
else if ($ret !== false) 
    echo 'Good username\n'; 

從PHP documentation

的preg_match()如果該圖案給定受試者,0,如果沒有,或FALSE如果錯誤匹配,則返回1發生。

然而另一種選擇是使用substr_count()

if (substr_count($username, ' ') > 1) 
    echo 'Wrong username\n'; 
else if ($ret !== false) 
    echo 'Good username\n'; 

從PHP documentation

substr_count - 數子的出現次數

+0

感謝兄弟它的魅力 – 2014-09-24 12:59:20

1

我想你不需要preg_match。這可以用substr_count這樣來完成:

if(substr_count($username, ' ') > 1) 
    echo 'Wrong username';