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里面有没有相应的函数

水平有限,也就写成这样了,分享一下!

posted @ 2017-12-18 17:22  自在飞花  阅读(746)  评论(1编辑  收藏  举报