我正在寻找将 cidr 前缀(例如 /28)转换为网络掩码(例如 255.255.255.240)并且没有为此找到函数,php 中是否存在一个函数?如果没有,我将如何去做?
问问题
10434 次
2 回答
6
示例 #1:
函数 cidr2NetmaskAddr()
function cidr2NetmaskAddr ($cidr) {
$ta = substr ($cidr, strpos ($cidr, '/') + 1) * 1;
$netmask = str_split (str_pad (str_pad ('', $ta, '1'), 32, '0'), 8);
foreach ($netmask as &$element)
$element = bindec ($element);
return join ('.', $netmask);
}
用法
echo cidr2NetmaskAddr ('194.234.213.0/28');
输出
255.255.255.240
示例 #2:
函数 createNetmaskAddr()
function createNetmaskAddr ($bitcount) {
$netmask = str_split (str_pad (str_pad ('', $bitcount, '1'), 32, '0'), 8);
foreach ($netmask as &$element)
$element = bindec ($element);
return join ('.', $netmask);
}
用法
echo createNetmaskAddr (28);
输出
255.255.255.240
于 2011-04-19T02:50:22.497 回答