2017-07-03 52 views
-2

我爲註冊帳戶頁面創建了一個功能,所以有人不能使用用戶名管理員或管理員註冊。代碼如下:禁止管理員作爲用戶名字

function forbidden($word){ 
$forbidden = array('Admin', 'admin', 'Administrator', 'administrator', 'admin1', 'Admin1', 'admin123', 'Admin123', 'admin123456', 'Admin123456', 'Administrator1', 'Administrator2', 
'Administrator3', 'admin3', 'admin4', 'Administrator123', 'administrator123', 'administrator1', 'administrator2', 'administrator123', 'administrator3', 'aDmin', 'adMin', 'ADMIN', 
'ADMINISTRATOR', 'admIn', 'admiN', 'ADmin', 'AdMiN', 'ADmin', 'ADMin', 'ADMIn', 'aDMin', 'ADministrator', 'aDministrator', 'adMinistrator','ADMinistrator', 'ADMInistrator', 'ADMINistrator', 
'ADMINistrator', 'ADMINIstrator', 'ADMINIStrator', 'ADMINISTrator','ADMINISTRator','ADMINISTRAtor','ADMINISTRATor','ADMINISTRATOr','ADMINISTRATOR_a','ADMINISTRATOR_b'); 

for($i=0; $i<=count($forbidden); $i++) { 
     if(isset($forbidden[$i])){ 
      if($word == $forbidden[$i]){ 
      $check_forbitten = "true"; 
      return $check_forbitten; 
      break; 
      } 
     } 

} 

} 

我的問題是有一個更準確,更快速的方法來做到這一點?

+1

我可能會使用不區分大小寫的正則表達式檢查,看是否與用戶名「admin」的開始。 **編輯**或者實際上只是檢查前5個字符的小寫子字符串是否與「admin」匹配。 – rickdenhaan

+0

聽起來像是一個很好的機會,瞭解使用正則表達式進行模式匹配的好處... – arkascha

+0

我真的不明白爲什麼我再次downvoted .... –

回答

10
function forbidden($word) { 
    return !preg_match('/admin/i', $word); 
} 

包括所有定義的詞彙和一些我想您是過濾掉。

也許因爲一些微調看起來像你只需要禁止管理作爲起點:

function forbidden($word) { 
    return !preg_match('/^admin/i', $word); 
} 

當心,這是返回布爾真/假。如果你真的想要一個字符串作爲你的例子,這會工作:

function forbidden($word) { 
    return (preg_match('/^admin/i', $word) ? 'false' : 'true'); 
} 
+0

我正要評論'/^admin/i ' – MontrealDevOne

+0

到目前爲止感謝你的最佳解決方案!我會接受爲正確答案! –

3

功能in_array()將是最好的在這裏使用,如果你想保持你的禁止單詞數組。除此之外,我會建議像@ rickdenhaan答案和使用正則表達式。你可以使用(\d)?(admin)(istrator)?(\d)?

function forbidden($word){ 
    $forbidden = array('Admin', 'admin', 'Administrator', 'administrator', 
     'admin1', 'Admin1', 'admin123', 'Admin123', 'admin123456', 'Admin123456', 
     'Administrator1', 'Administrator2', 
     'Administrator3', 'admin3', 'admin4', 'Administrator123', 
     'administrator123', 'administrator1', 'administrator2', 'administrator123', 
     'administrator3', 'aDmin', 'adMin', 'ADMIN', 
     'ADMINISTRATOR', 'admIn', 'admiN', 'ADmin', 'AdMiN', 'ADmin', 'ADMin', 
     'ADMIn', 'aDMin', 'ADministrator', 'aDministrator', 
     'adMinistrator','ADMinistrator', 'ADMInistrator', 'ADMINistrator', 
     'ADMINistrator', 'ADMINIstrator', 'ADMINIStrator', 
     'ADMINISTrator','ADMINISTRator','ADMINISTRAtor', 
     'ADMINISTRATor','ADMINISTRATOr', 
     'ADMINISTRATOR_a','ADMINISTRATOR_b'); 
    // word is forbidden 
    return in_array($word, $forbidden)); 
} 
相關問題