我有关于IP段的请求。
示例:我有一个IP段:10.10.10.0/8
我想在上述范围内将一个/24的数组(使用CIDR输入IP段(我尝试了以下类似的内容:
$c_segment = explode("/", $segment);
$c_mask = ipv4::CIDRtoMask($c_segment[1]);
$input = new stdClass();
$input->ip = $c_segment[0];
$input->netmask = $c_mask;
$input->ip_int = ip2long($input->ip);
$input->netmask_int = ip2long($input->netmask);
// Network is a logical AND between the address and netmask
$input->network_int = $input->ip_int & $input->netmask_int;
$input->network = long2ip($input->network_int);
// Broadcast is a logical OR between the address and the NOT netmask
$input->broadcast_int = $input->ip_int | (~ $input->netmask_int);
$input->broadcast = long2ip($input->broadcast_int);
$ranges = ipv4::rangeToCIDRList($input->ip,$input->broadcast);
natsort($ranges);
$start_seg = ip2long($input->network);
$end_seg = $ranges[sizeof($ranges)-1];
$end_seg = explode("/",$end_seg);
$end_seg = ip2long($end_seg[0]);
$iterations = round(log($end_seg));
$迭代应为/24的数量。但是我不确定这是正确的方法(或者上述是否是最好的方法。.(
我的最终结果应该帮助我每页打印IP地址/24(有一个选择的选项。(我知道在上面的示例中,这将是大量页面。
最佳
lars
我知道github.com/s1lentium/iptools会这样做,因此您可以查看其实现。