数组元素是否包含子字符串?

2022-08-30 21:17:09

我想要一个函数来检查数组的项是否包含字符串。因此:

array(1 => 'Super-user', 'Root', 'Admin', 'Administrator', 'System', 'Website', 'Owner', 'Manager', 'Founder');

然后检查应该返回true作为()的一部分也是数组的一部分。admin12admin12admin

我走了这么远:

$forbiddennames= array(1 => 'Super-user', 'Root', 'Admin', 'Administrator', 'System', 'Website', 'Owner', 'Manager', 'Founder');    

if(in_array( strtolower($stringtocheck), array_map('strtolower', $forbiddennames))){
        echo '"This is a forbidden username."';
    } else {
        echo 'true';
    }
}

只有这样,当我检查 .我希望它在检查时也能回显。adminadmin12

这可能吗(以及如何实现)?


答案 1

遍历数组并用于检查给定的输入字符串是否与数组中的任何项匹配:$forbiddennamesstripos

function is_forbidden($forbiddennames, $stringtocheck) 
{
    foreach ($forbiddennames as $name) {
        if (stripos($stringtocheck, $name) !== FALSE) {
            return true;
        }
    }
}

并按如下方式使用它:

if(is_forbidden($forbiddennames, $stringtocheck)) {
    echo "This is a forbidden username.";
} else {
    echo "True";
}

演示!


答案 2
foreach ($forbiddennames as $forbiddenname) {
    $nametocheck = strtolower($stringtocheck);
    if(strpos($stringtocheck, $forbiddenname) !== false) {
        echo "This is a forbidden username.";
        break;
    }
}