Когда IP-адрес был стильным (класс A, B, C и т. Д.), Было легко найти маску подсети, поскольку она фиксирована в зависимости от диапазонов адресов.
Теперь с CIDR невозможно узнать точную маску подсети, потому что любой непрерывный префикс может использоваться в качестве маски подсети.
Однако стильная подсеть может работать в вашем случае. Это определенно лучше, чем ничего. Вы можете определить маску подсети, используя эту функцию,
function get_net_mask($ip) {
if (is_string($ip)) {
$ip = ip2long($ip);
}
if (($ip & 0x80000000) == 0) {
$mask = 0xFF000000;
} elseif (($ip & 0xC0000000) == (int)0x80000000) {
$mask = 0xFFFF0000;
} elseif (($ip & 0xE0000000) == (int)0xC0000000) {
$mask = 0xFFFFFF00;
} else {
$mask = 0xFFFFFFFF;
}
return $mask;
}