人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのエラーチェックで、文中にメールアドレスが入っていたらエラーになるプログラムを作ろうとしております。
正規表現でどう書けばよいでしょうか??

●質問者: makocan
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●0ポイント

http://phpspot.net/php/pg%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%EF%BC%9A%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E8%AA%BF%E3%81%B9%E3%82%8B.html

こちらを参照してみてください。


makocanさんのコメント
これではダメだと思います。 「文中にメールアドレスが入っていたらエラーになるプログラム」 のため 「test@test.jp」ではなりますが、 「ああああtest@test.jp」 と入力した場合エラーにならないので、

きゃづみぃさんのコメント
ああああtest@test.jp もメールアドレスですか?! ま、 @を含む文字列を メールアドレスとして 判断するしかないですね。

makocanさんのコメント
メールアドレスであるかではなく、メールアドレスを含むかになるので 頂いたURL先の物で言えば、ああああtest@test.jpも「正しいメールアドレスかもしれません」と判定されないと思い通りにならないので。。。

きゃづみぃさんのコメント
そうですか。 じゃ a@b は メールアドレスでいいんでしょうか?

makocanさんのコメント
それはメールアドレスの形式ではないので。。 私のメールアドレスはtest@test.jpです ←エラー 私のメールアドレスはtest@testです ←エラーではない となります。 ただ、コメントにあるように、a-kuma3さんの回答で解決できております。

きゃづみぃさんのコメント
そうですか。

makocanさんのコメント
色々とありがとうございました!

2 ● a-kuma3
●100ポイント ベストアンサー

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

などなど。


メールアドレスを表す正規表現の話としては、これが有名だと思うのですけれど、ぼくは 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

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


makocanさんのコメント
出来ました!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ