filter_var() 結合過濾器常量與選項/標誌,提供強大的數據驗證與淨化能力。本文通過實戰案例演示進階用法。
$int = 122;
$min = 1; $max = 200;
if (filter_var($int, FILTER_VALIDATE_INT,
['options' => ['min_range' => $min, 'max_range' => $max]]) === false) {
echo "變量值不在合法範圍內";
} else {
echo "變量值在合法範圍內";
}
$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 地址";
}
$url = "https://www.example.com";
if (filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED) !== false) {
echo "合法 URL";
} else {
echo "非法 URL(缺少查詢字符串)";
}
$str = "Hello WorldÆØÅ!
";
$newstr = filter_var($str, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
echo $newstr; // Hello World!
| 類型 | 用途 | 規則 | 返回值 |
|---|---|---|---|
| Validating | 驗證格式(Email、URL、IP 等) | 嚴格格式規則 | 成功返回預期類型,失敗返回 false |
| Sanitizing | 清理字符(移除/編碼特殊字符) | 無格式規則 | 始終返回字符串 |