1

可能重复:
从 PHP 中的 CIDR 表示法获取列表 IP

你好呀,

我需要从 CIDR 表示法生成 IP 地址列表。

例如,用户输入了 200.41.132.11/28。作为回报,我需要显示与此 CIDR 表示法匹配的 IP 地址列表。

你知道一个 PHP 函数或有一个算法吗?

谢谢你的帮助。

垫。

4

1 回答 1

0

也许我错了,但尝试这样的事情(未经测试):

function getIPfromCIDR($CIDRn) {
  $a = explode("/", $CIDRn);
  $g = explode(".", $a[0]);
  $b = '';  $res = '';
  foreach ($g as $gv) $b .= str_pad(decbin($gv), 8, '0', STR_PAD_LEFT);
  $bm = str_split(str_pad(substr($b, 0, $a[1]), 32, '0', STR_PAD_RIGHT), 8);
  foreach($bm as &$bg) $bg = bindec($bg);
  return join('.', $bm); 
  }

$addr = "200.41.132.11/28";
print_r(getIPFromCIDR($addr));

输出应该是

200.41.132.0

仅获取位掩码(网络掩码)

function bitMask($bits) {
  $res = str_split(str_pad(str_pad('', $bits, '1'), 32, '0', STR_PAD_RIGHT), 8);
  foreach($res as &$bg) $bg = bindec($bg); 
  return join('.', $res); 
  }

echo bitMask(28);

输出

255.255.255.240

注意:它仅适用于 IPv4!

于 2011-04-06T12:15:31.743 回答