你好,
我需要从CIDR表示法生成IP地址列表。
例如,用户输入了200.41.132.11/28。作为回报,我需要显示与此CIDR表示法匹配的IP地址列表。
你知道一个PHP函数还是有算法?
感谢您的帮助。
垫。
答案 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!