PHPのエラーチェックで、文中にメールアドレスが入っていたらエラーになるプログラムを作ろうとしております。

正規表現でどう書けばよいでしょうか??

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/03/27 18:45:59
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.2

回答回数4968ベストアンサー獲得回数2151

ポイント100pt

どれくらい真面目にチェックするかで、随分と違ってきます。

  • メールアドレスっぽい文字列だったら、とにかくはじく。間違ってもはじいた方が安全
  • なんとなくはじければ、多少は取りこぼしがあっても良い
  • 規格通りのメールアドレスだけはじければ良い
  • 現存するメールアドレスは、全てはじかないと、とても困る
  • メールアドレスを切り出せないと駄目

などなど。


メールアドレスを表す正規表現の話としては、これが有名だと思うのですけれど、ぼくは Linux Journal に載ってたこっちを推したい。

Validate an E-Mail Address with PHP, the Right Way

http://www.linuxjournal.com/article/9585
http://www.linuxjournal.com/article/9585?page=0,3

四ページ目にある検証用の関数は、メールアドレス自体を渡すようになっているので、メールアドレスが含まれる文章からメールアドレスを切り出してあげなくちゃいけません。
正しいメールアドレスかどうかは、後で検証するので、多めに切出してあげれば良かろう、ということで、

(([A-Za-z0-9!#%&`_=\\/$'*+?^{}|~.-])+@([A-Za-z0-9!#%&`_=\\/$'*+?^{}|~.-])+)

上記の正規表現でメールアドレスっぽい文字列を切出して、Linux Journal の記事にある検証用の関数を使う。


とりあえず、みんながやってるような方法で良いんだけどなぁ、くらいであれば、PEAR の Validate クラスの email メソッドを使うという手もありそう。

PEAR - Validate

http://pear.php.net/manual/ja/package.validate.validate.php
http://pear.php.net/package/Validate/docs/latest/Validate/Validate.html#methodemail

こちらもメールアドレスっぽい文字列を切り出してから、検証用のメソッドに渡す、という手順になります。

id:makocan

出来ました!

2013/03/27 18:45:44

その他の回答1件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

他5件のコメントを見る
id:taknt

そうですか。

2013/03/29 15:59:03
id:makocan

色々とありがとうございました!

2013/03/29 23:04:47
id:a-kuma3 No.2

回答回数4968ベストアンサー獲得回数2151ここでベストアンサー

ポイント100pt

どれくらい真面目にチェックするかで、随分と違ってきます。

  • メールアドレスっぽい文字列だったら、とにかくはじく。間違ってもはじいた方が安全
  • なんとなくはじければ、多少は取りこぼしがあっても良い
  • 規格通りのメールアドレスだけはじければ良い
  • 現存するメールアドレスは、全てはじかないと、とても困る
  • メールアドレスを切り出せないと駄目

などなど。


メールアドレスを表す正規表現の話としては、これが有名だと思うのですけれど、ぼくは Linux Journal に載ってたこっちを推したい。

Validate an E-Mail Address with PHP, the Right Way

http://www.linuxjournal.com/article/9585
http://www.linuxjournal.com/article/9585?page=0,3

四ページ目にある検証用の関数は、メールアドレス自体を渡すようになっているので、メールアドレスが含まれる文章からメールアドレスを切り出してあげなくちゃいけません。
正しいメールアドレスかどうかは、後で検証するので、多めに切出してあげれば良かろう、ということで、

(([A-Za-z0-9!#%&`_=\\/$'*+?^{}|~.-])+@([A-Za-z0-9!#%&`_=\\/$'*+?^{}|~.-])+)

上記の正規表現でメールアドレスっぽい文字列を切出して、Linux Journal の記事にある検証用の関数を使う。


とりあえず、みんながやってるような方法で良いんだけどなぁ、くらいであれば、PEAR の Validate クラスの email メソッドを使うという手もありそう。

PEAR - Validate

http://pear.php.net/manual/ja/package.validate.validate.php
http://pear.php.net/package/Validate/docs/latest/Validate/Validate.html#methodemail

こちらもメールアドレスっぽい文字列を切り出してから、検証用のメソッドに渡す、という手順になります。

id:makocan

出来ました!

2013/03/27 18:45:44

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません