0

我正在尝试以不区分大小写的方式查找 "Username" 或 "Password" 的不同变体,如下所示:

$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()。我究竟做错了什么?是否可以将所有这些值放在一个数组中?谢谢。

4

1 回答 1

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完整。

于 2013-02-12T01:36:49.023 回答