Префикс php cidr к маске сети
Я пытаюсь преобразовать префикс cidr (например, /28) в маску сети (например, 255.255.255.240) и не нашел функцию для этого, существует ли в php? Если нет, как бы я поступил так?
2 ответа
Пример № 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