這幾天一直在用php做一個關于IP地址的工具大全,這其中就涉及到了一個最為關鍵的邏輯。就是用戶在提交IP地址時,為了防止用戶勿輸入或搗亂,就要對提交的IP地址做一個簡單的判斷。

下面提供幾種利用php判斷IP是否合法的方法,有正規,函數和數組的方法。

php利用正規檢查IP地址是否合法

PHP代碼:

<?php
//飛鳥慕魚博客
$ip = '192.168.0.5';
//正規表達式
$regexp = "/^((?:(?:25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(?:25[0-5]|2[0-4]\d|((1\d{2})|([1 -9]?\d))))$/";
if (preg_match($regexp, $ip)) {
    echo '是合法的IP地址';
} else {
    echo '不是合法的IP地址';
}
?>

注:以上php代碼,只能對ipv4的IP地址進行檢測,如果是IPV6的IP地址,請參考下面的幾個方法。

php利用數組進行ip地址檢測

PHP代碼:

<?php
//飛鳥慕魚博客
$ip = '192.168.0.5';
//檢測IP地址的函數
function is_ip($ip){
    $arr = explode('.',$ip);
    if(count($arr) != 4){
        return false;
    }else{
        for($i = 0;$i < 4;$i++){
            if(($arr[$i] < 0) || ($arr[$i] > 255)){
                return false;
            }
        }
    }
    return true;
}
//函數調用
var_dump(is_ip($ip));
//打印結果:bool(true)
?>

代碼說明:

1、將IP地址轉換成數組

国产视频app2、如果數組的元素的個數不為4,則不是合法的IP地址

国产视频app3、數組每個元素的值,如果小于0,大于255,則不是合法的IP地址

php使用 filter_var() 函數判斷IP地址是否合法

国产视频appfilter_var() 為php內置的函數,可以用它來判斷一個IP地址的合法性!

例1:php判斷一個IP地址是否合法

php代碼:

<?php
if(filter_var($ip, FILTER_VALIDATE_IP)) {
// true
}else {
// false
}
?>

例2:php判斷IP地址是否為IPV4的IP地址

php代碼:

<?php
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
// true
}else {
// false
}
?>

例3:php判斷IP地址是否為合法的IPV6地址

php代碼:

<?php
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE)) {
// true
}else {
// false
}
?>

例4:php判斷是否為合法的公共IPV4地址,并排除私有的IP地址

注:私有的IP地址,如

php代碼:

<?php
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE)) {
// true
}else {
// false
}
?>

例5:php判斷是否為公共的 IPV4 IP地址或 IPV6 IP地址

php代碼:

<?php
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
// true
}else {
// false
}
?>

filter_var() 函數介紹

本站有關于 filter_var() 函數的介紹,可參考以下文章:

http://xswdd.cn/post/282.html

http://xswdd.cn/post/493.html