STR函数[PHP]

STR函数[PHP],php,arrays,strstr,Php,Arrays,Strstr,伙计们,我来这里是因为我想在我的网站上做一些高级的事情,我不知道怎么做,如果可能的话 是这样的: 有人会在我的网站上注册,并有一个功能来验证此名称是否被阻止在“array()”中,但可以在您的名称上添加一些特殊字符,如“.”-“。。。如果我以“A.D.M”的名字注册,我的验证就不起作用了 你们能帮我吗 我的职能: final static function isBlockedName($name) { $blockedNames = array ('mod', 'adm', 'staff

伙计们,我来这里是因为我想在我的网站上做一些高级的事情,我不知道怎么做,如果可能的话

是这样的:

有人会在我的网站上注册,并有一个功能来验证此名称是否被阻止在“array()”中,但可以在您的名称上添加一些特殊字符,如“.”-“。。。如果我以“A.D.M”的名字注册,我的验证就不起作用了

你们能帮我吗

我的职能:

final static function isBlockedName($name) {
    $blockedNames = array ('mod', 'adm', 'staff');
    foreach($blockedNames as $list) {
        if(strtolower($name) == strtolower($list)) {
            self::AddBan('user','157788000',self::getUserID($name),'Nome Impróprio','3');
            session_destroy();

            header('Location: /');
            exit;
        }
    }
    foreach($blockedNames as $two) {
        if(strpos(strtolower($name), strtolower($two)) !== false) {
            self::AddBan('user','157788000',self::getUserID($name),'Nome Impróprio','3');
            session_destroy();

            header('Location: /');
            exit;
        }
    }
    return false;
}
对不起,我的英语不好:(

您可以使用删除比较中名称中的特殊字符。更改

if(strtolower($name) == strtolower($list)) {

另一种方法是使用而不是
foreach
循环:

if(in_array(str_replace(array('.', '-'), '', $name), $blockedNames)) {
    // do something
}

strpos
将在精确匹配时返回
0
,因此您不需要第一个循环,它与第二个循环重叠,因为您正确地使用
!==false检查。
if(in_array(str_replace(array('.', '-'), '', $name), $blockedNames)) {
    // do something
}