首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建IP地址范围?

问如何创建IP地址范围?
EN

Stack Overflow用户
提问于 2009-12-21 12:19:10
回答 3查看 2.7K关注 0票数 3

假设输入为:

222.123.34.45和222.123.34.55

然后我需要输出它们之间的ip地址:

代码语言:javascript
复制
222.123.34.45 222.123.34.46 ... 222.123.34.55
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-21 12:26:59

使用ip2long()和long2ip()

代码语言:javascript
复制
function ip_range($from, $to) {
  $start = ip2long($from);
  $end = ip2long($to);
  $range = range($start, $end);
  return array_map('long2ip', $range);
}

上面的代码将两个IP地址转换为数字(使用PHP核心函数),创建一个数字范围,然后将该数字范围转换为IP地址。

如果你想用空格分隔它们,只需implode()结果即可。

票数 20
EN

Stack Overflow用户

发布于 2009-12-21 12:39:06

利用PHP的类型灵活性

利用IP地址实际上是数字这一事实(可能在

代码语言:javascript
复制
 $ip2 = '222.123.34.55';
代码语言:javascript
复制
$ips = array();
for($i=ip2long($ip);$i<=ip2long($ip2);$i++)
{
    $ips[] = long2ip($i);
}

print_r($ips);
票数 0
EN

Stack Overflow用户

发布于 2018-05-23 21:32:02

可以使用函数;$ipStr = "192.168.1.0/255";

代码语言:javascript
复制
 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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1938162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档