• 締切済み

php初心者ですメールについて教えてください。

ホームページのメールフォームを作ってます。 返信用メールアドレスを記入してもらうフォームで、 携帯アドレスがエラー扱いになってしまいます。 if (trim($email) == '') { $error[] = 'メールアドレスは必須項目です。'; } else { $pattern = '/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/iD'; if (!preg_match($pattern, $email)) { $error[] = 'メールアドレスの形式が正しくありません。'; } } という感で、yahooやgmailを入れたときには上手くいくのですが、 自分のドコモの携帯のアドレスを入れると上手くいきません。 買った本を写して書いてる感じなので、どう直していいかわかりません。 教えてください!!

みんなの回答

  • thezen5
  • ベストアンサー率84% (27/32)
回答No.3

aaaa_aaaaaaaa@docomo.ne.jp でならそのコード正常に動作しますけど。 フォームの方でinputにsize設定してデータが切り取られたりしてませんか? phpの方で受け取った$emailをechoするなりして確認してみてください。 echo 'Email: '. $email; if (trim($email) == '') { $error[] = 'メールアドレスは必須項目です。'; } else { $pattern = '/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/iD'; if (!preg_match($pattern, $email)) { $error[] = 'メールアドレスの形式が正しくありません。'; } }

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんにちは。 ドコモのメールアドレスは特殊で通常は許されないxxx...xxx..xx@docomo.ne.jpという、ドットの連続が使用できています。 それにひっかかっているのだと思います。

miya8969
質問者

補足

メール前半に.は使っていません。 aaaa_aaaaaaaa@docomo.ne.jpというような形です。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

正規表現を少し勉強しましょう。 /^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/iD これは ・ 最初は 英数字 + _ - が1個以上 ・その後に「. の後に 英数字 + _ - が1個以上」のパターンが0個以上 ・@ が続く ・「英数字 - が1個以上続いた後に . 」が1個以上続く ・英数字 2~6個で終わる ・大文字小文字は無視 という意味です。 ドコモのアドレスだと、 docomo.ne.jp で、@以降は上記の条件にマッチしています。 ・「英数字 - が1個以上続いた後に . 」が1個以上続く →「docomo.」「ne.」 ・英数字 2~6個で終わる →「jp」で終わり となると、前半の部分がこのパターンとマッチしないことになります。 英数字 + _ - 以外で始まっている 英数字 + _ - . 以外の文字が使われている . が2つ以上続いている 等はないでしょうか? 直し方はそれ次第です。

miya8969
質問者

補足

携帯のアドレスは英語4つの後にアンダーバー、その後に英語が七つ、 (最初は 英数字 + _ - が1個以上)aaaa_aaaaaaaa@docomo.ne.jpなので条件を満たしてると思います。

関連するQ&A