PHP 進階過濾器

用過濾器偵測一個數字是否在一個範圍內

#以下實例使用了filter_var() 函數來偵測一個INT 型的變數是否在1 到200 內:

<?php
header("Content-type:text/html;charset=utf-8");
$int = 122;
$min = 1;
$max = 200;
if (filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$min, "max_range"=>$max))) === false) {
    echo("变量值不在合法范围内");
} else {
    echo("变量值在合法范围内");
}
?>

#程式執行結果:

##變數值在合法範圍內部


檢測IPv6 位址

#★FILTER_VALIDATE_IP

過濾器把值當作IP 來驗證。

以下實例使用了filter_var() 函數來偵測一個$ip 變數是否為IPv6 位址:      
<?php
header("Content-type:text/html;charset=utf-8");
$ip = "2001:0db8:85a3:08d3:1319:8a2e:0370:7334";
if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false) {
    echo("$ip 是一个 IPv6 地址");
} else {
    echo("$ip 不是一个 IPv6 地址");
}
?>

程式運行結果:

2001:0db8:85a3:08d3:1319:8a2e:0370:7334 是IPv6 位址

#偵測URL - 必須包含QUERY_STRING(查詢字串)

QUERY_STRING

「字面意思就是查詢字串例如常見的URL網頁位址都有xxx.asp?pn=123456 ?號後面的就是querystring 以下實例使用了filter_var() 函數來偵測$url 是否包含查詢字串:

<?php
 header("Content-type:text/html;charset=utf-8");
 $url = "http://www.baidu.com";
 
 if (!filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED) === false) {
     echo("$url 是一个合法的 URL");
 } else {
     echo("$url 不是一个合法的 URL");
 }
 ?>
程式運行結果:


http://www.baidu.com 不是一個合法的URL上面的範例中Url的網址裡面沒有包含QUERY_STRING,所以運行結果是否定的答案

移除ASCII 值大於127 的字元

##########★######FILTER_SANITIZE_STRING ###過濾器會移除或編碼不需要的字元。 ###

以下實例使用了filter_var() 函數來移除字串中ASCII 值大於127 的字符,同樣它也能移除HTML 標籤:

<?php
$str = "<h1>Hello WorldÆØÅ!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
echo $newstr;
?>

程式運行結果:

Hello World!


#PHP 篩選器參考手冊

你也可以透過訪問本站的 PHP 過濾器參考手冊 來查看過濾器的特定應用。

參考手冊中包含了篩選器參數的簡要說明和使用範例!


繼續學習
||
<?php header("Content-type:text/html;charset=utf-8"); $int = 122; $min = 1; $max = 200; if (filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$min, "max_range"=>$max))) === false) { echo("变量值不在合法范围内"); } else { echo("变量值在合法范围内"); } ?>