Levitt
Профессор
- Регистрация
- 20 Май 2008
- Сообщения
- 361
- Реакции
- 43
- Автор темы
- #1
Приветсвую, есть у меня огромный список IP организаций для блокировки. в формате
192.27.09.01-192.27.09.24
172.27.09.01-172.27.09.24
....
Сгуглил функцию по конвертации ИП -> CIDR, проблема только в том что не выходит задать для этого скрита массив списоком ип для обработки и отдачи результата.
192.27.09.01-192.27.09.24
172.27.09.01-172.27.09.24
....
Сгуглил функцию по конвертации ИП -> CIDR, проблема только в том что не выходит задать для этого скрита массив списоком ип для обработки и отдачи результата.
PHP:
function PlageVersCIDRs($ip_min, $ip_max) {
$cidrs = array();
$ip_min_bin = sprintf('%032b', $ip_min);
$ip_max_bin = sprintf('%032b', $ip_max);
$ip_cour_bin = $ip_min_bin;
while (strcmp($ip_cour_bin, $ip_max_bin) <= 0) {
$lng_reseau = 32;
$ip_reseau_bin = $ip_cour_bin;
while (($ip_cour_bin[$lng_reseau - 1] == '0') && (strcmp(substr_replace($ip_reseau_bin, '1', $lng_reseau - 1, 1), $ip_max_bin) <= 0)) {
$ip_reseau_bin[$lng_reseau - 1] = '1';
$lng_reseau--;
}
$cidrs[] = long2ip(bindec($ip_cour_bin)).'/'.$lng_reseau;
$ip_cour_bin = sprintf('%032b', bindec($ip_reseau_bin) + 1);
}
return $cidrs;
}