如何从给定的CIDR获取IP范围

时间:2014-08-25 19:02:16

标签: php

我希望使用PHP将给定子网掩码中的所有IP都放入一个数组中。 下面是在我的XAMPP服务器中执行正常的代码,但是当我尝试在live Server上执行它时,相同的代码没有错误,也没有输出。

$cidrArray = array("1.1.1.1/24","2.2.2.2/24","3.3.3.3/24");
$countCIDRarrayLength = count($cidrArray);
for($i=0;$i<$countCIDRarrayLength;$i++){
        $arrayCIDRwise = explode('/',$cidrArray[$i]);
        $bin = '';
for($j=1;$j<=32;$j++) {
    $bin .= $arrayCIDRwise[1] >= $j ? '1' : '0';
}

  $arrayCIDRwise[1] = bindec($bin);
   $ip = ip2long($arrayCIDRwise[0]);
   $nm = ip2long($arrayCIDRwise[1]);
   $nw = ($ip & $nm);
   $bc = $nw | (~$nm);
for($zm=1;($nw + $zm)<=($bc - 1);$zm++)
    {
    $all_ipArrray[] = long2ip($nw + $zm).  "<br/>";

    }
}

我从“http://php.net/manual/en/function.ip2long.php”获得了一段代码,我已经构建了我的逻辑,将网络掩码的所有IP都放在一个数组中。

我使用了代码段但无法理解下面提到的含义:

  • $ nw =($ ip&amp; $ nm);
  • $ bc = $ nw | (〜$纳米);

虽然PHP的版本在服务器和本地服务器XAMPP上是相同的。 我上面定义的IP范围是实际IP的虚拟范围。

0 个答案:

没有答案