可能重复:
从 PHP 中的 CIDR 表示法获取列表 IP
你好呀,
我需要从 CIDR 表示法生成 IP 地址列表。
例如,用户输入了 200.41.132.11/28。作为回报,我需要显示与此 CIDR 表示法匹配的 IP 地址列表。
你知道一个 PHP 函数或有一个算法吗?
谢谢你的帮助。
垫。
可能重复:
从 PHP 中的 CIDR 表示法获取列表 IP
你好呀,
我需要从 CIDR 表示法生成 IP 地址列表。
例如,用户输入了 200.41.132.11/28。作为回报,我需要显示与此 CIDR 表示法匹配的 IP 地址列表。
你知道一个 PHP 函数或有一个算法吗?
谢谢你的帮助。
垫。
也许我错了,但尝试这样的事情(未经测试):
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!