質問

ユーザーのメールアドレスを検証する必要があります。残念ながら、標準に準拠するバリデーターを作成するのは難しい

ここは、正規表現の例です。標準に準拠しようとします

メールアドレスを検証するPHPライブラリ(できればオープンソース)はありますか?

役に立ちましたか?

解決 5

Googleコードでライブラリを見つけました: http://code.google .com / p / php-email-address-validation /

他に何かありますか?

他のヒント

PHPのfilter_関数を見ましたか?彼らは完璧ではありませんが、私の経験ではかなりまともな仕事をしています。

使用例(ブール値を返します):

filter_var($ someEmail、FILTER_VALIDATE_EMAIL);

AFAIK、電子メールを検証する唯一の良い方法は、電子メールを送信し、ユーザーがこの電子メールのリンクを使用してサイトに戻るかどうかを確認することです。それが多くのサイトが行うことです。

有名な巨大な正規表現へのリンクで指摘するように、すべての形式の電子メールアドレスの検証は困難で、ほぼ不可能です。些細なスタイルの電子メールであっても、間違えるのは簡単です(電子メールアドレスの上限を拒否するサイトが多すぎることがわかりました!そして、ほとんどの古い正規表現は4文字以上のTLDを拒否します!)。

AFAIK、「Jean-Luc B. O'Grady」@ example.comおよびe = mc ^ 2 @ [82.128.45.117]は両方とも有効なアドレスです...一方、I-Made-It-Up @ Absurd- Domain-Name.infoは無効である可能性があります。

どういうわけか、私は何か、ユニークな@、何か他のものがあることを確認し、それと一緒に行くでしょう:それはほとんどのユーザーエラー(電子メールアドレスの代わりに空のフィールドまたはユーザー名など)をキャッチします。
ユーザーが偽のアドレスを提供したい場合は、ランダムに正しいものを表示します(see@on.tvまたはbill.gates@microsoft.com)。また、タイプミスをキャッチするバリデーターはありません(john.b@example.comではなくjhon.b@example.com)。

完全なRFCに対して電子メールを本当に検証したい場合は、正規表現を使用して@を分割し、ローカル名とドメイン名を個別に確認することをお勧めします。 "で始まるローカル名の大文字小文字の区別他のケースなどから。[で始まるドメイン名のケースを他のケースなどから分離します。より小さな特定のドメインで問題を分割し、明確に定義された単純なケースでのみ正規表現を使用します。
もちろん、このアドバイスは多くの正規表現の使用に適用できます...

[更新]メールアドレスの検証について知っているすべてをここに照合しました: http://isemail.info 、メールアドレスの問題を検証するだけでなく診断するようになりました。検証は答えの一部にすぎないという、ここでの多くのコメントに同意します。 http://isemail.info/about で私のエッセイを参照してください。

Cal Henderson、Dave Child、Phil Haack、Doug Lovell、RFC 3696のテストケースを照合しました。全部で158のテストアドレスです。

これらすべてのテストを、私が見つけたすべてのバリデーターに対して実行しました。比較はこちらです。 http://www.dominicsayers.com/isemail

人々がバリデータを強化するにつれて、このページを最新に保つようにします。これらのテストのコンパイルと自分のバリデータ

ユーザーは、 RFC 3696に対するエラッタ特に。正規の例のうち3つは、実際には無効なアドレスです。また、住所の最大長は254または256文字で、 320ではありません

Cal Henderson (Flickrの)は RFC822準拠のメールアドレスマッチャー。RFCの説明と、RFCを使用してメールアドレスを照合するコードが記載されています。苦情もなく今しばらく使っています。

  

RFC822(1982年に公開)では、   とりわけ、   インターネットテキストメッセージ(電子メール)   アドレス。 RFCを見つけるには   グーグル-の多くのコピーがあります   それらをオンラインで。彼らは少し簡潔です   そして奇妙にフォーマットされていますが、   彼らが何であるかを見ることができる少しの努力   で取得。

...更新...

Porges がコメントで指摘したように、リンク上のライブラリは古くなっていますが、そのページには更新されたバージョン

Zend_Validate メール検証ツールが含まれています。

検証には多くの正規表現があります-非常に基本的なものから非常に高度なものまですべてです。 アプリケーションで有効なメールの重要性に合ったものを選ぶべきです。

Zend_Validate_EmailAddress [ソース]。

依存関係を修正したら、次の操作を実行できます。

$mail_validator = new Zend_Validate_EmailAddress();
$mail_validator->isValid($address);   // returns true or false

最善の方法は、svn externalを介してプロジェクトに完全なZendライブラリを取得し、インクルードパスを指定することです...

ただし、必要なファイルをダウンロードできます( 1 2 3 4 5 6 )、それらすべてを含める(require_once呼び出しを削除する)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top