PHP如何检查提供的IP RANGE是IPv4还是IPv6

Posted

技术标签:

【中文标题】PHP如何检查提供的IP RANGE是IPv4还是IPv6【英文标题】:PHP how to check if IP RANGE provided is IPv4 or IPv6 【发布时间】:2017-11-14 10:57:11 【问题描述】:

所以我有以下两个 IP 范围

2a02:c78::/29
2.120.0.0/13

我可以用什么php函数来区分ipv4范围和ipv6范围

需要这样的东西

function ip_range_type($range_ip)

//if ip range provided is ipv4 then

//if ip range provided is ipv6 then

【问题讨论】:

正则表达式是您要找的。​​span> PHP function to validate IPv4 and IPv6 using regex的可能重复 strpos($ip, ':') !== false 应该做得很好…… 根据重复的帖子我喜欢filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4); @the4kman 您没有阅读我的问题,我正在验证范围是 ipv4 还是 ipv6 RANGE 是关键字而不是地址。 【参考方案1】:

此解决方案的功劳归用户@deceze

function ip_range_type($range_ip)

    if (strpos($range_ip, ':') !== false) 
        //if ip range provided is ipv6 then
        echo "range provided is ipv6";
     else 
        //if ip range provided is ipv4 then
        echo "range provided is ipv4";
    

$range_ip = "2a02:c78::/29";
ip_range_type($range_ip);

【讨论】:

【参考方案2】:

IP 地址有很多范围,例如所有 IPv4 Ranges 与网络地址和 CIDR 相同,您也可以检查 IPv6 Ranges。您的问题的答案已经在这里check IPv4 or IPv6 Range 以一种有效的方式进行了解释。

【讨论】:

以上是关于PHP如何检查提供的IP RANGE是IPv4还是IPv6的主要内容,如果未能解决你的问题,请参考以下文章

PHP性能的分析

如何设计优雅的IP检查API以支持IPv4和IPv6

将 IPV4 转换为 IPV6 php

端口占用 问题处理

PHP检查IPAddress是不是是本地的

如何确定字符串是 C# 中的有效 IPv4 还是 IPv6 地址?