我想将一个CIDR前缀(例如/28)转换为网络掩码(例如255.255.255.240),但是没有找到PHP中的函数来实现这一点。如果没有,我该如何处理?
我想将一个CIDR前缀(例如/28)转换为网络掩码(例如255.255.255.240),但是没有找到PHP中的函数来实现这一点。如果没有,我该如何处理?
Example #1:
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:
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);
Output
255.255.255.240