Нашол на сайте php.net функцию для конверта сидр айпи адресов в диапазоны PHP: function cidr($ip_addr_cidr) { $ip_arr = explode('/', $ip_addr_cidr); $dotcount = substr_count($ip_arr[0], "."); $padding = str_repeat(".0", 3 - $dotcount); $ip_arr[0].=$padding; $bin = ''; for($i=1;$i<=32;$i++) {$bin .= $ip_arr[1] >= $i ? '1' : '0';} $ip_arr[1] = bindec($bin); $ip = ip2long($ip_arr[0]); $nm = ip2long($ip_arr[1]); $diap['begin'] = ($ip & $nm); $diap['end'] = $diap['begin'] | (~$nm); return $diap; } cidr("188.225.35.0/24"); с теме, что заканчиваются на ноль работает коректно и без проблем а если в конце не ноль cidr("188.225.35.16/24"); - выдает значения с отрицательными знаками а для 188.225.35.0/32 (если после слеша 32), то выдает на строке PHP: $diap['end'] = $diap['begin'] | (~$nm); в чем проблема? п/с что значит такое $bin .= $ip_arr[1] >= $i ? '1' : '0'; ?