示例#1
0
 /**
  * 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;
 }
示例#2
0
/**
* 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);
}