时时商务社区
标题:
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