/** * Verifies the ip is a valid IPv4 or IPv6 address * * @param string IP Address * * @return boolean Returns true if the address is valid */ function verify_ip($ip) { return get_iptype($ip) ? true : false; }
/** * This will expand a valid IPv6 address to its * fullest form. Anythng else will be returned untouched. * * @param string Input ip address * * @return string Returned ip address. */ function expand_ip($ip) { if (get_iptype($ip) != 6) { return $ip; } if ($ip == '::') { $ip = '::0'; } $ipbits = explode('::', $ip); $size = sizeof($ipbits); if ($size > 2) { return $ip; } if ($size == 1) { $allbits = explode(':', $ip); } else { $lbits = explode(':', $ipbits[0]); $rbits = explode(':', $ipbits[1]); if (!strlen($lbits[0])) { unset($lbits[0]); } else { if (!strlen($rbits[0])) { unset($rbits[0]); } } $size = sizeof($lbits) + sizeof($rbits); $expand = 8 - $size; $fill = array(); for ($i = 1; $i <= $expand; $i++) { $fill[] = '0'; } $allbits = array_merge($lbits, $fill, $rbits); } $bits = array(); foreach ($allbits as $bit) { $bits[] = strtoupper(trim(str_pad($bit, 4, '0', STR_PAD_LEFT))); } return implode(':', $bits); }