我一直在阅读有关如何确定IP是IPv4还是IPv6的问题,而且我觉得需要注意的是是否存在冒号.但是,您具有IPv4映射的IPv6地址和IPv4兼容的IPv6地址.在我看来,这些类型的地址都有冒号和句点,所以不是寻找::ffff字符串开头是否没有的解决方案,为什么不这样做:
function isIPv6($ip) {
if(strpos($ip, ":") !== false && strpos($ip, ".") === false) {
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
编辑:我错过了什么或者这个功能在所有情况下都能正常工作吗?
PHP => 5.2使用filter_var进行"内置"方法
你的功能可能如下所示:
function isIPv6($ip) {
if(filter_var($ip, FILTER_VALIDATE_IP)) {
if(filter_var($ip, FILTER_FLAG_IPV6)) {
//It is IPv6 indeed.
} else {
//It is IPv4
}
} else {
// NOT VALID IP
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3366 次 |
| 最近记录: |