根据最后一个八位字节增加IP范围PHP

时间:2017-01-23 22:44:21

标签: php arrays ip increment

我有两个变量,$newIpStart$newIpEnd

知道我如何递增最后一个八位字节,从$newIpStart$newIpEnd并将其存储在数组f.e。中?

更清楚地看一下这个例子。

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

我希望所有IP都在192.168.1。 1 和192.168.1之间。 150 (包括启动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执行一些操作。

有什么想法吗?

2 个答案:

答案 0 :(得分: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;

它应该起作用,而不是我想的最佳方式。

答案 1 :(得分:0)

只需使用while循环:

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

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

var_dump($ips);

如果您不确定范围的结尾,可以使用字符串函数来获取最后一个八位字节并在循环中使用它。