« PHP:文字列が半角数字のみかチェック | メイン | PHP:多次元配列の扱い方 »

2005年09月07日

PHP:E-mailアドレスをチェック

■簡易的なE-mailアドレスチェック

if(ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+
    '.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+
    \.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $email)){
    print "メールアドレスの可能性がある";
}else{
    print "メールアドレスではない";
}

■E-mailアドレスをより正確にチェックしたい場合には、以下のように行います。
まずユーザー定義関数email_checkを定義し、E-mailアドレスを引数として関数email_checkを実行します。

function email_check($email){

    if(preg_match('/^(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]
    +(?![^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff])|"[^\\\\\x80-\x
    ff\n\015"]*(?:\\\\[^\x80-\xff][^\\\\\x80-\xff\n\015"]*)*")(?:\.(
    ?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:
    ".\\\\\[\]\000-\037\x80-\xff])|"[^\\\\\x80-\xff\n\015"]*(?:\\\\[
    ^\x80-\xff][^\\\\\x80-\xff\n\015"]*)*"))*@(?:[^(\040)<>@,;:".\\\
    \\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\\\[\]\000-\037\x
    80-\xff])|\[(?:[^\\\\\x80-\xff\n\015\[\]]|\\\\[^\x80-\xff])*\])
    (?:\.(?:[^(\040)<>@,;:".\\\\\[\]\000-\037\x80-\xff]+(?![^(\040)
    <>@,;:".\\\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\\\x80-\xff\n\015
    \[\]]|\\\\[^\x80-\xff])*\]))*$/',
    $email)){

        return 1;
    }
}

if(email_check($str)){
    print "メールアドレスの可能性がある";
}else{
    print "メールアドレスではない";
}

投稿者 wing : 2005年09月07日 22:54

コメント