我正在寻找将cidr前缀(例如/ 28)转换为网络掩码(例如255.255.255.240)并且没有为此定位函数,PHP中是否存在?如果没有,我该怎么做呢?
我写了一个包含执行此操作的方法的类.
function CIDRtoMask($int) {
return long2ip(-1 << (32 - (int)$int));
}
Run Code Online (Sandbox Code Playgroud)
示例#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);
}
Run Code Online (Sandbox Code Playgroud)
用法
echo cidr2NetmaskAddr ('194.234.213.0/28');
Run Code Online (Sandbox Code Playgroud)
产量
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);
}
Run Code Online (Sandbox Code Playgroud)
用法
echo createNetmaskAddr (28);
Run Code Online (Sandbox Code Playgroud)
产量
255.255.255.240
| 归档时间: |
|
| 查看次数: |
9163 次 |
| 最近记录: |