我一直在閱讀如何確定一個IP是IPv4還是IPv6,看起來很明顯,要查找的是否是冒號。但是,您具有IPv4映射的IPv6地址和IPv4兼容的IPv6地址。在我看來,這些類型的地址有兩個冒號和點,所以不是解決方案,尋找是否有沒有::ffff
在字符串的開頭,爲什麼不這樣做:IPV4與IPV6 PHP函數
function isIPv6($ip) {
if(strpos($ip, ":") !== false && strpos($ip, ".") === false) {
return true;
}
return false;
}
編輯:AM我錯過了一些東西,或者這個功能在所有情況下都能正常工作?
這是個問題嗎?你似乎提供了一種檢測IPv6的功能。 – Raptor 2013-03-28 06:14:42
可以看一下IP的長度嗎? – Class 2013-03-28 06:15:40
或者你可以讓自己變得簡單,並且使用['FILTER_FLAG_IPV4'或'FILTER_FLAG_IPV6'和'filter_var()'](http://php.net/manual/en/function.filter-var.php)。 – 2013-03-28 06:15:47