我正在尝试以不区分大小写的方式找到“用户名”或“密码”的不同变体,如下所示:
$unVar1 = "username";
$unVar2 = "user name";
$usernameVariations1 = strcasecmp($unVar1, $unVar2);
$unVar3 = "User";
$unVar4 = "id";
$usernameVariations2 = strcasecmp($unVar3, $unVar4);
$pwVar1 = "password";
$pwVar2 = "pass";
$passwordVariations1 = strcasecmp($pwVar1, $pwVar2);
if ($element->value === $usernameVariations1
|| $element->value === $usernameVariations2
|| $element->value === $passwordVariations1) {
echo "Weee!";
}
else {
echo "boo!";
}
问题是它为boo
输出中的每个元素输出“foreach()
”。我究竟做错了什么?是否可以将所有这些值放在一个数组中?感谢。
答案 0 :(得分:1)
你需要做的更复杂。如果您的用户名和密码不区分大小写,请在比较它们时将它们设为小写:
if (strtolower($username) === strtolower($element->value))
{
// ok
}
现在,如果您允许将空格添加到中间和缩写,那么您可以尝试计划B:
$valid_usernames = array('Username', 'username', 'user name', 'UsE Nam');
if (in_array($element->value, $valid_usernames))
{
// ok
}
请注意,您现在有责任保持$valid_usernames
完整。