符合 RFC 822 的 Email 地址 PHP 验证函数

RFC 822: STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES 定义了 Email 地址的详细格式。

于是就有了遵循这个标准的 Email 地址验证代码(php) :

function is_valid_email_address($email){
        $qtext = '[^\x0d\x22\x5c\x80-\xff]';
        $dtext = '[^\x0d\x5b-\x5d\x80-\xff]';
        $atom = '[^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c'.
            '\x3e\x40\x5b-\x5d\x7f-\xff]+';
        $quoted_pair = '\x5c[\x00-\x7f]';
        $domain_literal = "\x5b($dtext|$quoted_pair)*\x5d";
        $quoted_string = "\x22($qtext|$quoted_pair)*\x22";
        $domain_ref = $atom;
        $sub_domain = "($domain_ref|$domain_literal)";
        $word = "($atom|$quoted_string)";
        $domain = "$sub_domain(\x2e$sub_domain)*";
        $local_part = "$word(\x2e$word)*";
        $addr_spec = "$local_part\x40$domain";
        return preg_match("!^$addr_spec$!", $email) ? 1 : 0;
    }

PHP : Parsing Email Adresses in PHP 上面也提到了 ruby 和 python 的版本

3 thoughts on “符合 RFC 822 的 Email 地址 PHP 验证函数”

Leave a Reply

Your email address will not be published. Required fields are marked *