<?php
/**
* 判断IP是否在某个网络内
* 运维生存时间
* site:www.ttlsa.com
* @param $ip
* @param $network
* @return bool
*/
function ip_in_network($ip, $network)
{
$ip = (double) (sprintf("%u", ip2long($ip)));
$s = explode('/', $network);
$network_start = (double) (sprintf("%u", ip2long($s[0])));
$network_len = pow(2, 32 - $s[1]);
$network_end = $network_start + $network_len - 1;
if ($ip >= $network_start && $ip <= $network_end)
{
return true;
}
return false;
}
?>
这种方法可以当做一个常用函数来使用。啰嗦一句,对于要把IP地址存入数据库的情况下,强烈建议先用ip2long进行转换后再存入数据库。 如需转载请注明出处:http://www.ttlsa.com/html/2751.html
有时候需要判断某个IP是否在某个范围内,对于有划分子网的网络,一眼是很难判断的,需要计算子网起止与结束地址,对于学过CCNA知识的未必会算的清楚。看代码:
转载于:https://my.oschina.net/766/blog/211135