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 に答える