2017-01-23 3 views
1

У меня есть две переменные, $newIpStart и $newIpEnd.Увеличение диапазона IP на основе последнего октета | PHP

Любая идея, как я могу увеличить последний октет, от $newIpStart до $newIpEnd и сохранить его в массиве f.e.?


Для более ясного ознакомления с примером.

$newIpStart = '192.168.1.1'; //string 
$newIpEnd = '192.168.1.150'; //string 

Я хотел бы получить все IP-адреса между 192.168.1. и 192.168.1. (включая начальный IP-адрес и конечный IP-адрес). Обратите внимание, что в примере 192.168.1 (первые три октета являются статическими - они не меняются), нужно только увеличивать только последний.

Так между ними, я должен получить IP-адреса, как:

`192.168.1.1` 
`192.168.1.2` 
`192.168.1.3` 
.. n .. 
`192.168.1.150` 

После того как я получить все эти IP-адреса, я бы хранить его в массиве, так что я могу цикл, и сделать некоторые операции по каждым IP.

Любые идеи?

ответ

1

Использование взрываются версии:

$newIpStart = '192.168.1.1'; 
$newIpEnd = '192.168.1.150'; 
$arrayIpStart = explode('.', $newIpStart); 
$arrayIpEnd = explode('.', $newIpEnd); 
$count = end($arrayIpEnd) - end($arrayIpStart); 
$arrayIpResult = array(); 

for ($i = 1; $i <= $count; $i++) { 
    $arrayIpStart[3] = $i; 
    $arrayIpResult []= implode('.', $arrayIpStart); 
} 

return $arrayIpResult; 

Это Шоуда работы, не самый лучший способ я думаю.

+0

Да, что-то в этом роде, но учтите, что мне нужно «подсчитать счет» в сценарии, чтобы увеличить его. В общем, было бы здорово, если бы я мог вычесть, например '192.168.1.150 - 192.168.1.1' =' 149' и получить счет, но это невозможно. :) – fugitive

+0

Просто выполните: '$ count = $ arrayIpStart [3] - $ arrayIpEnd [3];'. Посмотрите, как мой ответ редактировался. –

+0

Идеально, просто протестировано. :) Всем спасибо! – fugitive

0

Просто используйте время цикла:

$base = '192.168.1.'; 
$ips = array(); 
$i = 1; 

while($i < 150){ 
    $ips[] = $base.$i; 
    $i++; 
} 

var_dump($ips); 

Если вы не уверены в конце диапазона, вы можете использовать функцию строки, чтобы получить последний октет и использовать его в цикле.

Смежные вопросы