• ベストアンサー

phpでメールアドレス入力の入力チェックについて

phpでメールアドレス入力のファームを作成しようと思います。 aaaaa@aaaaa.ne.jp とか入ってくるとして、 どのような入力チェックが必要ですか? 最終的には送らないと分からないとしても、mail()関数が受け付けない文字列ぐらいは事前にはじきたいです。 「この関数で一発だよ」みたいなのがあるとか、 地道にこれとこれをチェックするのが一般的とか、 あと、 「info@日本語ドメイン.jp」みたいにメールアドレスに日本語ドメインってありえるのでしょうか? どなたかご教授下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • asahina02
  • ベストアンサー率47% (95/202)
回答No.1

if( preg_match( "/^[-_\.a-zA-Z0-9]+\@[-_a-zA-Z0-9]+\.[-_\.a-zA-Z0-9]+$/", $mailaddress ] ) == false ) {  だめ } 私は基本的にこういうチェックを行ってます

noname#17562
質問者

補足

具体的なコマンド助かります。 あとは、 日本語ドメインのメールアドレスってあるの? ってところだけ気になってます。 どうなのでしょうか?

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

getmxrr()やgethostbyname()を併用すれば 若干は精度をあげることができます。 function checkMail($num) { if (preg_match("/[^-._~@\w]+/", $num)) return false; $hostname = substr($num, strpos($num, "@")+1); $mxcheck = getmxrr($hostname, $mxhosts); $hostcheck = ($hostname != gethostbyname($hostname)); if (!$mxcheck and !$hostcheck) return false; return true; } マルチバイトドメインのメールはないとは いいきれませんが、迷惑なのでチェックで はじいてしまってかまわないと思います。

noname#17562
質問者

補足

ありがとうございます。 マルチバイトドメインは除外派が多いようですね。

関連するQ&A