PHP ip 计算 - 从 IP 地址>段数组



我有关于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会这样做,因此您可以查看其实现。

最新更新