Как создать диапазон IP-адресов? - PullRequest
3 голосов
/ 21 декабря 2009

Предположим, что ввод:

222.123.34.45 и 222.123.34.55

тогда мне нужно вывести IP-адрес между ними:

222.123.34.45 222.123.34.46 ... 222.123.34.55

Ответы [ 3 ]

20 голосов
/ 21 декабря 2009

Использование ip2long() и long2ip():

function ip_range($from, $to) {
  $start = ip2long($from);
  $end = ip2long($to);
  $range = range($start, $end);
  return array_map('long2ip', $range);
}

Вышеприведенный код превращает два IP-адреса в числа (используя основные функции PHP), создает диапазон чисел, а затем преобразует этот диапазон в IP-адреса.

Если вы хотите, чтобы они разделялись пробелами, просто implode() результат.

0 голосов
/ 23 мая 2018

Вы можете использовать функцию; $ ipStr = "192.168.1.0/255";

 function getIpsArrayFromStrRange($ipStr) {
    $ipsArray = array();
    //validate ip and check range existing
    $regexp = '/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})(\/(\d{1,3}))?$/';
    $matches = array();
    if(preg_match($regexp,$ipStr,$matches)){


        //if it is a range
        if(isset($matches[6])){
            $min_ip = min($matches[4],$matches[6]);
            $max_ip = max($matches[4], $matches[6]);
            for($i=$min_ip; $i<=$max_ip; $i++){
                $ipsArray[] = "$matches[1].$matches[2].$matches[3].$i";
            }   
        }else{
            $ipsArray[] = $ipStr;
        }
        return $ipsArray;
    }else{
        return false;
    }
}
0 голосов
/ 21 декабря 2009

Использование гибкости типов PHP

Использование факта, что IP-адреса на самом деле являются числами (может сделать странные вещи на

$ ip2 = '222,123,34,55';

$ips = array();
for($i=ip2long($ip);$i<=ip2long($ip2);$i++)
{
    $ips[] = long2ip($i);
}

print_r($ips);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...