【发布时间】:2013-03-18 12:11:18
【问题描述】:
我一直在阅读有关如何确定 IP 是 IPv4 还是 IPv6 的内容,对我来说,要寻找的东西似乎很明显是否有冒号。但是,您有 IPv4 映射的 IPv6 地址和 IPv4 兼容的 IPv6 地址。在我看来,这些类型的地址既有冒号又有句点,所以与其寻找字符串开头是否没有::ffff 的解决方案,不如直接这样做:
function isIPv6($ip) {
if(strpos($ip, ":") !== false && strpos($ip, ".") === false) {
return true;
}
return false;
}
编辑:我是否遗漏了什么或者这个功能在所有情况下都能正常工作?
【问题讨论】:
-
这是个问题吗?您似乎提供了一个检测 IPv6 的功能。
-
能看看IP的长度吗?
-
或者你可以让自己轻松一点,使用
FILTER_FLAG_IPV4orFILTER_FLAG_IPV6withfilter_var()。 -
Shivan,我的问题是上述功能是否在所有情况下都能正常工作。类,IP 的长度似乎不是最好的解决方案,尤其是在使用速记符号时。 publib.boulder.ibm.com/infocenter/iseries/v5r3/…Jared,这似乎比上面的简单功能更昂贵 - 如果它工作正常的话。
-
如果它工作正常?你相信你想相信的。