gpt4 book ai didi

PHP:匹配子网列表 (CIDR) 中的 IP

转载 作者:行者123 更新时间:2023-12-05 03:07:08 26 4
gpt4 key购买 nike

<分区>

我有一个这样的 CIDR 列表:

192.168.0.1/24
10.0.0.1/32
etc...

名单还在增加。
为了检查 IP 是否符合这些 CIDR 之一,我执行了一个具有以下功能的循环:

function cidr_match($ip, $range){
list ($subnet, $bits) = explode('/', $range);
$ip = ip2long($ip);
$subnet = ip2long($subnet);
$mask = -1 << (32 - $bits);
$subnet &= $mask; // in case the supplied subnet was not correctly aligned
return ($ip & $mask) == $subnet;
}

由于我的 CIDR 列表在增长,我想改进该功能以避免在返回 true 之前逐行测试 CIDR。我想去掉上面函数周围的 for 循环。
有没有办法对我要检查的 IP 执行某种“预检查”,这样它就不会按顺序(从上到下)运行完整列表?
我想优化以便我的代码以这种方式运行:将 IP 提供给函数 --> 函数种类“排序”列表或“查找”最可能的 CIDR --> 对 IP 运行检查最可能的 CIDR(s) --> 返回“真”尽快
将不胜感激。

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