Иногда нужно из записи IP вида 109.248.12.0/23 получить полный список IP (новый IP - новая строка).
Как из короткой записи диапазона IP адресов получить полный список (Php / CIDR)
05.02.2024
<?php
function cidrToRange($cidr) {
$range = array();
$cidr = explode('/', $cidr);
$range[0] = long2ip((ip2long($cidr[0])) & ((-1 << (32 - (int)$cidr[1]))));
$range[1] = long2ip((ip2long($range[0])) + pow(2, (32 - (int)$cidr[1])) - 1);
return $range;
}
function cidrRangeToArray($from, $to) {
$start = ip2long($from);
$end = ip2long($to);
$range = range($start, $end);
return array_map('long2ip', $range);
}
$aRange = cidrToRange("109.248.12.0/23");
$aInRanges = explode("\n", file_get_contents( __DIR__ . "out.txt"));