gpt4 book ai didi

php - 使用 PHP 合并 IP 范围

转载 作者:行者123 更新时间:2023-12-03 21:24:42 26 4
gpt4 key购买 nike

我被困在一个点上,无法超越它:

我有一个 IP 范围列表,我需要将它们合并为一个范围。例如

192.168.1.1

192.168.1.2

192.168.1.3

192.168.1.5

192.168.1.6

我需要将它们归入 IP 范围。对于这种情况,它将是 192.168.1.1-192.168.1.3192.168.1.5-192.168.1.6

我正在考虑使用 ip2long 函数将它们转换为整数并对其进行排序。但不能想得更多。

如有任何帮助,我们将不胜感激。

提前致谢:)

最佳答案

你可以使用ip2long http://php.net/manual/en/function.ip2long.php将包含 (IPv4) Internet 协议(protocol)点分地址的字符串转换为正确的地址,您可以使用这样的范围

echo ip2long('192.168.1.1');//-1062731519

echo ip2long('192.168.1.6');//-1062731514

用这个你可以检查用户的 ip 范围,...是否有效或,...

例如,如果用户 ip 在 192.168.1.1-192.168.1.6 范围内 echo 'hello';

//http://www.php.net/manual/en/function.ip2long.php#81030
function in_ip_range($ip_one, $ip_two=false){
if($ip_two===false){
if($ip_one==$_SERVER['REMOTE_ADDR']){
$ip=true;
}else{
$ip=false;
}
}else{
if(ip2long($ip_one)<=ip2long($_SERVER['REMOTE_ADDR']) && ip2long($ip_two)>=ip2long($_SERVER['REMOTE_ADDR'])){
$ip=true;
}else{
$ip=false;
}
}
return $ip;
}
//usage
if(in_ip_range('192.168.1.1','192.168.1.6')){
echo 'hello';
}

IP组

  $list=array(
'192.168.1.1',
'192.168.1.2',

'192.168.1.3',

'192.168.1.5',

'192.168.1.6',
'192.168.1.6',
'192.168.1.9'
);
$Grouplist='';
foreach($list as $ip){
$ip2long=ip2long($ip);
if(is_array($Grouplist)){
$is_group=false;
foreach($Grouplist as $Key=>$Range){
$Range=explode("/",$Range);
if(($Range[0]-1)<$ip2long and $ip2long<($Range[1]+1)){
$is_group=true;
continue;
}elseif(($Range[0]-1)==$ip2long){
$Grouplist[$Key]=$ip2long.'/'.$Range[1];
$is_group=true;
}elseif(($Range[1]+1)==$ip2long){
$Grouplist[$Key]=$Range[0].'/'.$ip2long;
$is_group=true;
}
}
if(!$is_group)
{
$Grouplist[]=($ip2long).'/'.($ip2long);
}
}else{
$Grouplist[]=($ip2long).'/'.($ip2long);
}
}
print_r($Grouplist);

输出:

 Array
(
[0] => -1062731519/-1062731517
[1] => -1062731515/-1062731514
[2] => -1062731511/-1062731511
)

如果转换成ip组就是

foreach($Grouplist as $Val){
$Range=explode("/",$Val);
echo long2ip($Range[0])."/".long2ip($Range[1])."\n";
}

输出

192.168.1.1/192.168.1.3
192.168.1.5/192.168.1.6
192.168.1.9/192.168.1.9

关于php - 使用 PHP 合并 IP 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16272136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com