0

私はプロジェクトに戻って、いくつかの検証ビットを片付けています。通常、正規表現チェックを使用して電子メールが正しいことを検証します。 /function.filter-var.php

今、いくつかのテストを試しましたが、期待した結果が得られません。

$email_b = 'bog^us@gmail.com';
var_dump(filter_var($email_b, FILTER_SANITIZE_EMAIL));

戻り値:

string(16) "bog^us@gmail.com" 

しかし、私にとっては消毒されていないので、試してみると

if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
    echo "This (email_b) email address is considered valid.";
}

もう一度言いますが、これは有効な電子メール アドレスではありません。

ここで何か不足していますか?

4

1 に答える 1

3

はい、何かが欠けています。bog^us@gmail.comは有効なメール アドレスであるため、テストは正しい結果を返しています。メールアドレスで有効な文字の概要については、この記事を参照してください。

http://en.wikipedia.org/wiki/Email_address

電子メール アドレスのローカル部分 (@ の前のビット) では、次の文字が有効です:-

  • 大文字と小文字の英字 (a ~ z、A ~ Z) (ASCII: 65 ~ 90、97 ~ 122)
  • 数字 0 ~ 9 (ASCII: 48 ~ 57)
  • 文字 !#$%&'*+-/=?^_`{|}~ (ASCII: 33, 35–39, 42, 43, 45, 47, 61, 63, 94–96, 123–126)

さらに、リンクされた記事に詳細が記載されている制限付きの他のものもあります。

この記事には、テストで使用できる無効なアドレスの例が含まれています。そのような:-

  • Abc.example.com (@ 文字でローカル部分とドメイン部分を区切る必要があります)
  • Abc.@example.com (ドット(.)はローカル部分の最後)
  • Abc..123@example.com (文字ドット(.)は二重)
于 2012-11-08T19:12:39.163 に答える