filter_var関数でメールアドレスをバリデーションする

More than 1 year has passed since last update.

メールアドレスを入力させるフォームを作るときなどで、
入力されたアドレスが正しいメールアドレス(RFCに準拠しているという意味で)であるかどうかを
チェックしたい時は、正規表現を使ってチェックすることができる。

if(preg_match('/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/iD', $mailaddress)){
     return '正しいメールアドレスです'
}else{
     return '正しくないメールアドレスです'
}

あるいは、filter_var関数を使うこともできる

if(filter_var($mailaddress, FILTER_VALIDATE_EMAIL)){
     return '正しいメールアドレスです'
}else{
     return '正しくないメールアドレスです'
}

filter_var関数でチェックできるデータは下記で確認できる。
http://www.php.net/manual/ja/filter.filters.php

filter_var関数は便利だが、チェックを柔軟にしたい場合は正規表現を使用したほうがいいかもしれない。
例えば、DoCoMoの携帯メールアドレスは2009年頃までドメインの直前にドットを入れたり、
ドットを連続して使用したりすることができた(2010年以降はできない模様)。
これはRFCに準拠しないのでfilter_var関数では弾かれてしまうが、
このようなメールアドレスを現在も使用している人は意外といたりするので、注意が必要だ。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.