- ベストアンサー
phpでメールアドレス入力の入力チェックについて
phpでメールアドレス入力のファームを作成しようと思います。 aaaaa@aaaaa.ne.jp とか入ってくるとして、 どのような入力チェックが必要ですか? 最終的には送らないと分からないとしても、mail()関数が受け付けない文字列ぐらいは事前にはじきたいです。 「この関数で一発だよ」みたいなのがあるとか、 地道にこれとこれをチェックするのが一般的とか、 あと、 「info@日本語ドメイン.jp」みたいにメールアドレスに日本語ドメインってありえるのでしょうか? どなたかご教授下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
if( preg_match( "/^[-_\.a-zA-Z0-9]+\@[-_a-zA-Z0-9]+\.[-_\.a-zA-Z0-9]+$/", $mailaddress ] ) == false ) { だめ } 私は基本的にこういうチェックを行ってます
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
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; } マルチバイトドメインのメールはないとは いいきれませんが、迷惑なのでチェックで はじいてしまってかまわないと思います。
補足
ありがとうございます。 マルチバイトドメインは除外派が多いようですね。
補足
具体的なコマンド助かります。 あとは、 日本語ドメインのメールアドレスってあるの? ってところだけ気になってます。 どうなのでしょうか?