我想要一个检查数组项是否包含字符串的函数。 就这样:
array(1 => 'Super-user', 'Root', 'Admin', 'Administrator', 'System', 'Website', 'Owner', 'Manager', 'Founder');
然后检查admin12
应该返回true,因为admin12
(admin
)的一部分也是数组的一部分。
我走到这一步:
$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';
}
}
只有这只回声“这是一个禁止的用户名。”当我检查admin
时。我希望它在检查admin12
时也能回显。
这可能(以及如何)?
答案 0 :(得分:6)
循环遍历$forbiddennames
数组并使用stripos
检查给定的输入字符串是否与数组中任何项目相匹配:
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";
}
答案 1 :(得分:3)
foreach ($forbiddennames as $forbiddenname) {
$nametocheck = strtolower($stringtocheck);
if(strpos($stringtocheck, $forbiddenname) !== false) {
echo "This is a forbidden username.";
break;
}
}
答案 2 :(得分:2)
如果你使用array_map,foreach或其他东西并不重要。可能的解决方案:
$forbiddenNames = array('admin', 'bannedName');
$input = 'Admin12';
$allowed = true;
foreach($forbiddenNames as $forbiddenName) {
if(stripos($input, $forbiddenName) !== false) {
echo $input, ' is invalid';
$allowed = false;
break;
}
}
if($allowed === true) {
echo $input, ' is valid';
}
答案 3 :(得分:2)
你想要PHP的'strpos'功能。循环遍历每个数组元素,然后针对'strpos'PHP strpos reference
检查每个元素foreach($forbiddennames as $fn){
if(strpos($stringtocheck,$fn)){
//found it!
}else{
//not found!
}
}