从 PHP 中的 CIDR 表示法获取列表 IP

2023-12-26

有没有办法(或函数/类)从 CIDR 表示法获取 IP 地址列表?

例如,我有 73.35.143.32/27 CIDR,并且想要获取此表示法中的所有 IP 的列表。有什么建议么?

谢谢。


我将编辑前述 https://stackoverflow.com/questions/4931721/getting-list-ips-from-cidr-notation-in-php/4931756#4931756 class https://gist.github.com/jonavon/2028872包含一个方法。这是我想出的代码,在那之前可能会对您有所帮助。

function cidrToRange($cidr) {
  $range = array();
  $cidr = explode('/', $cidr);
  $range[0] = long2ip((ip2long($cidr[0])) & ((-1 << (32 - (int)$cidr[1]))));
  $range[1] = long2ip((ip2long($range[0])) + pow(2, (32 - (int)$cidr[1])) - 1);
  return $range;
}
var_dump(cidrToRange("73.35.143.32/27"));

//////////////////OUTPUT////////////////////////
// array(2) {
//   [0]=>
//   string(12) "73.35.143.32"
//   [1]=>
//   string(12) "73.35.143.63"
// }
/////////////////////////////////////////////////

返回 ip 范围的低端作为数组中的第一个条目,然后返回高端作为第二个条目。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 PHP 中的 CIDR 表示法获取列表 IP 的相关文章