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的主要内容,如果未能解决你的问题,请参考以下文章