这几天一直在用php做一个关于IP地点的东西大全,这个中就涉及到了一个最为要害的逻辑。就是用户在提交IP地点时,为了防备用户勿输入或捣乱,就要对提交的IP地点做一个简朴的判定。
下面提供几种操作php判定IP是否正当的要领,有正规,函数和数组的要领。
php操作正规查抄IP地点是否正当PHP代码:
<?php //飞鸟慕鱼博客 $ip = '192.168.0.5'; //正规表达式 $regexp = "/^((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1 -9]?\d))))$/"; if (preg_match($regexp, $ip)) { echo '是正当的IP地点'; } else { echo '不是正当的IP地点'; } ?>注:以上php代码,只能对ipv4的IP地点举办检测,假如是IPV6的IP地点,请参考下面的几个要领。
php操作数组举办ip地点检测PHP代码:
<?php //飞鸟慕鱼博客 $ip = '192.168.0.5'; //检测IP地点的函数 function is_ip($ip){ $arr = explode('.',$ip); if(count($arr) != 4){ return false; }else{ for($i = 0;$i < 4;$i++){ if(($arr[$i] < 0) || ($arr[$i] > 255)){ return false; } } } return true; } //函数挪用 var_dump(is_ip($ip)); //打印功效:bool(true) ?>代码说明:
1、将IP地点转换成数组
2、假如数组的元素的个数不为4,则不是正当的IP地点
3、数组每个元素的值,假如小于0,大于255,则不是正当的IP地点
php利用 filter_var() 函数判定IP地点是否正当filter_var() 为php内置的函数,可以用它来判定一个IP地点的正当性!
例1:php判定一个IP地点是否正当
php代码:
<?php if(filter_var($ip, FILTER_VALIDATE_IP)) { // true }else { // false } ?>例2:php判定IP地点是否为IPV4的IP地点
php代码:
<?php if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { // true }else { // false } ?>例3:php判定IP地点是否为正当的IPV6地点
php代码:
<?php if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)) { // true }else { // false } ?>例4:php判定是否为正当的民众IPV4地点,并解除私有的IP地点
注:私有的IP地点,如
php代码:
<?php if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE)) { // true }else { // false } ?>例5:php判定是否为民众的 IPV4 IP地点或 IPV6 IP地点
php代码:
<?php if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { // true }else { // false } ?>filter_var() 函数先容本站有关于 filter_var() 函数的先容,可参考以下文章: