To find yourself, think for yourself.

PHP4 IPv6 validation

Posted by Martijn On May - 4 - 2009

Incase you don’t have the luxury of PHP5’s filter_ functions, this is a handy regexp:

function validate_ipv6($ip)
{
$hex = ‘[A-Fa-f0-9]‘;
$h16 = “{$hex}{1,4}”;
$dec_octet = ‘(?:25[0-5]|2[0-4]d|1dd|[1-9]d|[0-9])’;
$ipv4 = “$dec_octet\.$dec_octet\.$dec_octet\.$dec_octet”;
$ls32 = “(?:$h16:$h16|$ipv4)”;
$ipv6 = “(?:(?:{$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]))?)”;

$regex = “/^$ipv6$/”;
return preg_match($regex, $ip);
}

WP Cumulus Flash tag cloud by Roy Tanck requires Flash Player 9 or better.