如何从PHP中的CIDR表示法获取IP地址列表?

时间:2011-04-06 11:27:23

标签: php cidr

  

可能重复:
  Getting list IPs from CIDR notation in PHP

你好,

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

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

你知道一个PHP函数还是有算法?

感谢您的帮助。

垫。

1 个答案:

答案 0 :(得分: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!