[PHP] verify IPv6 and IPv4
剛好最近在找如何判斷給訂的 IP 是不是 IPv6
google 了一下, 在此篇找到: http://www.electrictoolbox.com/php-validate-ip-address-filter-var/
發現 PHP 居然內建自動偵測, 真是不錯, 但其實他是使用 PHP 的 filter_var 來幫忙篩選
詳細官方說明網頁: http://php.net/manual/en/function.filter-var.php
不過要注意要 PHP ver 5.2 以上才支援喔!!
節錄偵測 IPv6 範例如下
理所當然也有偵測 IPv4的
前面的 FILTER_VALIDATE_IP 就是先判定他真的是 IP
那他還有偵測不要是 private ip range 的 flag: FILTER_FLAG_NO_PRIV_RANGE
算是一個偷懶的作法XD
當然偵測是否給定的是 IP, 也可以用 PHP 的 function: ip2long (但只限制IPv4)
ex:
google 了一下, 在此篇找到: http://www.electrictoolbox.com/php-validate-ip-address-filter-var/
發現 PHP 居然內建自動偵測, 真是不錯, 但其實他是使用 PHP 的 filter_var 來幫忙篩選
詳細官方說明網頁: http://php.net/manual/en/function.filter-var.php
不過要注意要 PHP ver 5.2 以上才支援喔!!
節錄偵測 IPv6 範例如下
function is_ipv6($ip) { if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) return true; else return false; }
理所當然也有偵測 IPv4的
function is_ipv4($ip) { if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) return true; else return false; }
前面的 FILTER_VALIDATE_IP 就是先判定他真的是 IP
那他還有偵測不要是 private ip range 的 flag: FILTER_FLAG_NO_PRIV_RANGE
算是一個偷懶的作法XD
當然偵測是否給定的是 IP, 也可以用 PHP 的 function: ip2long (但只限制IPv4)
ex:
function is_valid_v4($ip) { return sprintf("%u", ip2long($ip)); } $ip = "192.168.1.1"; echo (is_valid_v4($ip))? "$ip is a valid IPv4\n" : "$ip is an invalid IPv4\n"; $ip = "abc"; echo (is_valid_v4($ip))? "$ip is a valid IPv4\n" : "$ip is an invalid IPv4\n";
留言
張貼留言