假设输入为:
222.123.34.45
和222.123.34.55
然后我需要输出它们之间的IP地址:
222.123.34.45 222.123.34.46 ... 222.123.34.55
答案 0 :(得分:20)
function ip_range($from, $to) {
$start = ip2long($from);
$end = ip2long($to);
$range = range($start, $end);
return array_map('long2ip', $range);
}
以上将两个IP地址转换为数字(使用PHP核心功能),创建一系列数字,然后将该数字范围转换为IP地址。
如果你想用空格分隔implode()
结果。
答案 1 :(得分:0)
利用PHP的类型灵活性
利用IP地址实际上是数字的事实(可能会做奇怪的事情
$ ip2 ='222.123.34.55';
$ips = array();
for($i=ip2long($ip);$i<=ip2long($ip2);$i++)
{
$ips[] = long2ip($i);
}
print_r($ips);
答案 2 :(得分:0)
你可以使用这个功能; $ 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;
}
}