IPがIPv4かIPv6かを判断する方法について読んでいますが、探すべきことはコロンがあるかどうかであることは明らかです。ただし、IPv4 にマッピングされた IPv6 アドレスと、IPv4 互換の IPv6 アドレスがあります。これらのタイプのアドレスにはコロンとピリオドの両方があるように思われるので::ffff
、文字列の先頭にないかどうかを調べるソリューションの代わりに、これを実行してみませんか:
function isIPv6($ip) {
if(strpos($ip, ":") !== false && strpos($ip, ".") === false) {
return true;
}
return false;
}
編集:何か不足していますか、それともこの機能はすべての場合に適切に機能しますか?