时时商务社区

标题: php求一个网段开始与结束IP地址的方法 [打印本页]

作者: xgnic    时间: 2018-2-14 05:44

            本文实例讲述了php求一个网段开始与结束IP地址的方法。分享给大家供大家参考。具体如下:
比如:网段(192168.1.5/24),其子网掩码根据24划分为:
11111111.11111111.11111111.00000000(255.255.255.0)
说明:IP地址为32bits,24在划分网段中就表示前面有24个1,后面有8个0.
开始IP地址的算法是:192.168.1.5的二进制与子网掩码的二进制进行“与”运算出来的。
结束IP地址的算法是:子网掩码的二进制先取反,然后和192.168.1.5的二进制进行“或”运算
实际的就应用中,那样得出的是网络地址和广播地址,网络地址+1才是第一个主机地址,广播地址-1为最后一个主机地址。
32)
  die('error submask');
  return str_repeat("1", $n).str_repeat("0",32-$n);
}
function revBin($s)
{
  $p=array('0','1','2');
  $r=array('2','0','1');

  return str_replace($p,$r,$s);
}
function startIp($str,$bSub)
{
  $bIp = decbin($str);
  $bIp = str_pad($bIp,8,"0",STR_PAD_LEFT);
  $sIp = bindec($bIp & $bSub);
  return $sIp;
}
function endIp($str,$bSub)
{
  $bIp = decbin($str);
  $bIp = str_pad($bIp,8,"0",STR_PAD_LEFT);
  $eIp = bindec($bIp | revBin($bSub));
  return $eIp;
}
$ip = array('192','168','1','5');//设定IP地址,可以从表单获取,这里只作演示
$mask = '24';          //设置掩码
$bSub = mask2bin($mask);     //将子网掩码转换二进制
$mask = array();
$mask[] = substr($bSub,"0",8);  //将子网掩码每8位分一段
$mask[] = substr($bSub,"8",8);
$mask[] = substr($bSub,"16",8);
$mask[] = substr($bSub,"24",8);
echo '[table]

  [td]掩码:[/td]
  [td]
  ';
for ($i=0;$i
  [/td]
  [/tr]
[tr]
  [td]网络地址:[/td]
  [td]
  ';
  for ($i=0;$i
  [/td]
  [/tr]
    [/td]
  [/tr]
[tr]
  [td]第一个可用:[/td]
  [td]
  ';
  for ($i=0;$i
  [/td]
  [/tr]
[tr]
  [td]最后可用:[/td]
  [td]
  ';
  for ($i=0;$i
  [/td]
  [/tr]
[tr]
  [td]广播地址:[/td]
  [td]
  ';
  for ($i=0;$i
希望本文所述对大家的php程序设计有所帮助。
            
            
您可能感兴趣的文章:
  • php产生随机数的两种方法实例代码 输出随机IP
  • php中获取主机名、协议及IP地址的方法
  • php隐藏IP地址后两位显示为星号的方法
  • php限制ip地址范围的方法
  • php获取访问者IP地址汇总
  • PHP 获取ip地址代码汇总
  • php获取本机真实IP地址实例代码
  • 基于PHP实现通过照片获取ip地址
  • PHP实现的限制IP投票程序IP来源分析
  • PHP获取用户访问IP地址的5种方法
  • php进行ip地址掩码运算处理的方法
  • PHP实现的随机IP函数【国内IP段】
            




    欢迎光临 时时商务社区 (http://bbs.4435.cn/) Powered by Discuz! X3.2