关于ip判断

php正则实现ip段判断

$ip = '22.18.10.2'; 
$arrayip = array('123.12.*.*','22.18.10.*');//ip段 
$ipregexp = implode('|', str_replace( array('*','.'), array('d+','.') ,$arrayip) );                
echo preg_match("/^(".$ipregexp.")$/", $ip);

验证ip是否合法

function is_public_ip($ip) { 
    if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE)){ 
        return true; 
    }else{ 
        return false;
    }
}

附:

PHP FILTER_VALIDATE_IP 过滤器

定义和用法

FILTER_VALIDATE_IP 过滤器把值作为 IP 进行验证。

Name: "validate_ip"

ID-number: 275

可能的标志:

FILTER_FLAG_IPV4 - 要求值是合法的 IPv4 IP(比如 255.255.255.255)

FILTER_FLAG_IPV6 - 要求值是合法的 IPv6 IP(比如 2001:0db8:85a3:08d3:1319:8a2e:0370:7334)

FILTER_FLAG_NO_PRIV_RANGE - 要求值是 RFC 指定的私域 IP (比如 192.168.0.1)

FILTER_FLAG_NO_RES_RANGE - 要求值不在保留的 IP 范围内。该标志接受 IPV4 和 IPV6 值。

原文地址:https://www.cnblogs.com/leedaily/p/8250070.html