PHP小程序,子网掩码长度的计算
开发中遇到一个小需求,就是把国内的网段,纳入到公司服务器的IP地址白名单里:
比如电信的地址是这样的:
给出了每个网段的网络地址和广播地址(其实就是每个网段的第一个地址和最后一个地址),网页上提供了文件下载
而服务器里设置过滤规则是这样的:
比如: 192.168.1.0/24
所以我就需要些一个小程序,完成上面的转换:
下面是小程序的demo:
<?php
//子网掩码长度计算
function submaskLength($ip,$ip2){
$str = decbin(ip2long($ip));
$str2 = decbin(ip2long($ip2));
for ($i=0; $i < 32; $i++) {
$strChar = substr($str, $i,1);
$strChar2 = substr($str2, $i,1);
//echo $strChar,',',$strChar2,'<br/>';
if (strcmp($strChar,$strChar2)) {
break;
}
}
return $i;
}
$ip = '192.168.1.1';
$ip2 = '192.168.1.255';
echo submaskLength($ip,$ip2);
?>
后来,此需求取消了,也就没有继续研究下去.不知道php里面有没有相应的函数
水平有限,也就写成这样了,分享一下!