我正在寻找将cidr前缀(例如/ 28)转换为网络掩码(例如255.255.255.240)并且没有为此定位函数,PHP中是否存在一个?如果没有,我将如何做到这一点?
我写了一个class,其中包含一个执行此操作的方法 .
function CIDRtoMask($int) { return long2ip(-1 << (32 - (int)$int)); }
我在snipplr发布了全班 .
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); }
Usage
echo cidr2NetmaskAddr ('194.234.213.0/28');
Output
255.255.255.240
Example #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);
2 回答
我写了一个class,其中包含一个执行此操作的方法 .
我在snipplr发布了全班 .
Example #1:
function cidr2NetmaskAddr()
Usage
Output
Example #2:
function createNetmaskAddr()
Usage
Output