prozbik / php-email-address-validation

Automatically exported from code.google.com/p/php-email-address-validation
0 stars 0 forks source link

IPv6 literal address #12

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
For example, root@[2010:fb:fdac::311:2101]   is perfectly valid address.

Original issue reported on code.google.com by witold.b...@gmail.com on 30 Jun 2010 at 1:32

GoogleCodeExporter commented 9 years ago
We're using the following in function check_domain_portion() now.

        // some IPv4/v6 regexps borrowed from Feyd
        // see: http://forums.devnetwork.net/viewtopic.php?f=38&t=53479
        $dec_octet = '(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|[0-9])';
        $hex_digit = '[A-Fa-f0-9]';
        $h16 = "{$hex_digit}{1,4}";
        $IPv4Address = "$dec_octet\\.$dec_octet\\.$dec_octet\\.$dec_octet";
        $ls32 = "(?:$h16:$h16|$IPv4Address)";
        $IPv6Address =
            "(?:(?:{$IPv4Address})|(?:".
            "(?:$h16:){6}$ls32" .
            "|::(?:$h16:){5}$ls32" .
            "|(?:$h16)?::(?:$h16:){4}$ls32" .
            "|(?:(?:$h16:){0,1}$h16)?::(?:$h16:){3}$ls32" .
            "|(?:(?:$h16:){0,2}$h16)?::(?:$h16:){2}$ls32" .
            "|(?:(?:$h16:){0,3}$h16)?::(?:$h16:){1}$ls32" .
            "|(?:(?:$h16:){0,4}$h16)?::$ls32" .
            "|(?:(?:$h16:){0,5}$h16)?::$h16" .
            "|(?:(?:$h16:){0,6}$h16)?::" .
            ")(?:\\/(?:12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))?)";

        // Check if domain is IP, possibly enclosed in square brackets.
        if (preg_match("/^($IPv4Address|\[$IPv4Address\]|\[$IPv6Address\])$/",
                        $strDomainPortion)){
            return true;

Original comment by splitbr...@gmail.com on 6 Feb 2011 at 12:19