我为注册帐户页面创建了一个功能,因此有人无法使用用户名admin或管理员注册。代码如下:
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;
}
}
}
}
我的问题是有更准确,更快捷的方法吗?
答案 0 :(得分:10)
function forbidden($word) {
return !preg_match('/admin/i', $word);
}
包含您定义的所有单词以及其他一些我想要过滤掉的单词。
也许有些微调,因为看起来你只想禁止管理员作为开始:
function forbidden($word) {
return !preg_match('/^admin/i', $word);
}
请注意,这是返回布尔值true / false。如果你真的想要一个像你的例子中的字符串,这将有效:
function forbidden($word) {
return (preg_match('/^admin/i', $word) ? 'false' : 'true');
}
答案 1 :(得分: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));
}