PHP Создание диапазонов IP

Как вы знаете, функция range () может получить диапазон между числом и другим,

как сделать то же самое с IP
как пример ..

$range_one = "1.1.1.1"; $range_two = "1.1.3.5"; print_r( range($range_one, $range_two) ); /* I want a result of : 1.1.1.1 1.1.2.2 1.1.3.3 1.1.3.4 1.1.3.5 */ 

я думал об использовании функции explode (), чтобы взорвать «.» и отделить каждый номер, а затем использовать диапазон с каждым из них, после чего объединить их все вместе, для меня это немного сложно, и я думаю, что есть более простой способ сделать это

Solutions Collecting From Web of "PHP Создание диапазонов IP"

Вы можете использовать ip2long для преобразования IP-адресов в целые числа. Вот функция, которая работает для старых IPv4-адресов:

 /* Generate a list of all IP addresses between $start and $end (inclusive). */ function ip_range($start, $end) { $start = ip2long($start); $end = ip2long($end); return array_map('long2ip', range($start, $end) ); } $range_one = "1.1.1.1"; $range_two = "1.1.3.5"; print_r( ip_range($range_one, $range_two) ); 

Как насчет этого:

 $range_one = "1.1.1.1"; $range_two = "1.1.3.5"; $ip1 = ip2long ($range_one); $ip2 = ip2long ($range_two); while ($ip1 <= $ip2) { print_r (long2ip($ip1) . "\n"); $ip1 ++; } 

Обновить:

BTW, ваш ожидаемый результат не является точно диапазоном. Например, следующий IP после 1.1.1.1 равен 1.1.1.2 а не 1.1.2.2 .

Вы можете использовать inet_ntop, inet_ pton http://www.php.net/manual/en/function.inet-ntop.php