PHP 菜鳥教程

PHP 高級教程

PHP & MySQL

PHP 參考手冊

PHP 過濾器

在本教程中,您將學習如何清理和驗證PHP中的用戶輸入。

使用過濾器驗證和清理數(shù)據(jù)

清理和驗證用戶輸入是Web應用程序中最常見的任務之一。為了簡化此任務,PHP提供了本機篩選器擴展,可用于清理或驗證數(shù)據(jù),例如電子郵件地址,URL,IP地址等。

要使用過濾器擴展來驗證數(shù)據(jù),您需要使用PHP的filter_var()功能。該函數(shù)的基本語法可以通過以下方式給出:

filter_var(variable, filter, options)

此函數(shù)帶有三個參數(shù),其中最后兩個是可選的。第一個參數(shù)是要過濾的值,第二個參數(shù)是要應用的過濾器的ID,第三個參數(shù)是與過濾器相關(guān)的選項數(shù)組。讓我們看看它是如何工作的。

清理字符串

以下示例將通過刪除字符串中的所有HTML標記來清理字符串:

<?php
//示例用戶注釋
$comment = "<h1>嘿! 今天過得好嗎?</h1>";
 
//清理并打印注釋字符串
$sanitizedComment = filter_var($comment, FILTER_SANITIZE_STRING);
echo $sanitizedComment;
?>
測試看看?/?

上面示例的輸出如下所示:

嘿! 今天過得好嗎

驗證整數(shù)值

下面的示例將驗證該值是否為有效整數(shù)。

<?php
// 示例整數(shù)值
$int = 20;
 
// 驗證整數(shù)值
if(filter_var($int, FILTER_VALIDATE_INT)){
    echo "<b>$int</b>是一個有效的整數(shù)";
} else{
    echo "<b>$int</b>不是有效的整數(shù)";
}
?>
測試看看?/?

在上面的示例中,如果將變量$int設(shè)置為0,則示例代碼將顯示無效的整數(shù)消息。要解決此問題,您需要顯式測試值0,如下所示:

<?php
//示例整數(shù)值
$int = 0;
 
// Validate sample integer value
if(filter_var($int, FILTER_VALIDATE_INT) === 0 || filter_var($int, FILTER_VALIDATE_INT)){
    echo "The <b>$int</b> 是有效整數(shù)";
} else{
    echo "The <b>$int</b> 不是有效的整數(shù)";
}
?>
測試看看?/?

驗證IP地址

下面的示例將驗證該值是否是有效的IP地址。

<?php
// IP 地址
$ip = "172.16.254.1";
 
// 驗證示例IP地址
if(filter_var($ip, FILTER_VALIDATE_IP)){
    echo "<b>$ip</b> 是有效的IP地址";
} else {
    echo "<b>$ip</b> 不是有效的IP地址";
}
?>
測試看看?/?

您可以分別使用FILTER_FLAG_IPV4或FILTER_FLAG_IPV6標志進一步對IPV4或IPV6 IP地址應用驗證。這是一個實例:

<?php
// IP 地址
$ip = "172.16.254.1";
 
// 驗證示例IP地址
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)){
    echo "<b>$ip</b> 是有效的IPV6地址";
} else {
    echo "<b>$ip</b> 不是有效的IPV6地址";
}
?>
測試看看?/?

清理和驗證電子郵件地址

下面的示例將向您展示如何清理和驗證電子郵件地址。

<?php
// email 地址
$email = "someone@@example.com";
 
//從電子郵件中刪除所有非法字符
$sanitizedEmail = filter_var($email, FILTER_SANITIZE_EMAIL);
 
//驗證電子郵件地址
if($email == $sanitizedEmail && filter_var($email, FILTER_VALIDATE_EMAIL)){
    echo "$email 是有效的電子郵件地址";
} else{
    echo "$email 不是有效的電子郵件地址";
}
?>
測試看看?/?

注:FILTER_SANITIZE_EMAIL過濾器由除字母,數(shù)字和所提供的電子郵件地址字符串刪除所有無效字符!#$%&'*+-=?^_`{|}~@.[]。

清理和驗證URL

以下示例將向您展示如何清理和驗證URL。

<?php
//  url 示例
$url = "http:://www.example.com";
 
//從網(wǎng)址中刪除所有非法字符
$sanitizedUrl = filter_var($url, FILTER_SANITIZE_URL);
 
// 驗證網(wǎng)站URL
if($url == $sanitizedUrl && filter_var($url, FILTER_VALIDATE_URL)){
    echo "$url 是有效的網(wǎng)站網(wǎng)址";
} else{
    echo "$url 不是有效的網(wǎng)站網(wǎng)址";
}
?>
測試看看?/?

注意:FILTER_SANITIZE_URL過濾器由除字母,數(shù)字和所提供的URL字符串中刪除所有無效字符$-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=。

您還可以使用flag來檢查URL是否包含查詢字符串FILTER_FLAG_QUERY_REQUIRED,如以下示例所示:

<?php
//url
$url = "http://www.example.com?topic=filters";
 
//驗證網(wǎng)站網(wǎng)址以獲取查詢字符串
if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)){
    echo "<b>$url</b> 包含查詢字符串";
} else{
    echo "<b>$url</b> 不包含查詢字符串";
}
?>
測試看看?/?

請參考HTML URL教程,以了解URL的不同組成部分。

驗證范圍內(nèi)的整數(shù)

以下示例將驗證提供的值是否為整數(shù),以及它是否在0到100的范圍內(nèi)。

<?php
// 示例整數(shù)值
$int = 75;
 
//驗證樣本整數(shù)值
if(filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range" => 0,"max_range" => 100)))){
    echo "<b>$int</b> 在0到100的范圍內(nèi)";
} else{
    echo "<b>$int</b> 不在0到100的范圍內(nèi)";
}
?>
測試看看?/?
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清