PHP 過濾器 函式
PHP 過濾器簡介
PHP 過濾器用於驗證來自不安全來源(如使用者輸入)的資料。
安裝
從 PHP 5.2.0 開始,過濾器函式預設啟用。使用這些函式無需安裝。
執行時配置
這些函式行為受 php.ini 中的設定影響
名稱 | 描述 | 預設值 | 可更改 |
---|---|---|---|
filter.default | 使用此過濾器過濾所有 $_GET、$_POST、$_COOKIE、$_REQUEST 和 $_SERVER 資料。接受您喜歡的預設過濾器名稱。有關過濾器名稱列表,請參閱過濾器列表。 | "unsafe_raw" | PHP_INI_PERDIR |
filter.default_flags | 設定預設過濾器時應用的預設標誌。出於向後相容性原因,此選項預設為 FILTER_FLAG_NO_ENCODE_QUOTES。 | NULL | PHP_INI_PERDIR |
PHP 過濾器函式
函式 | 描述 |
---|---|
filter_has_var() | 檢查指定輸入型別的變數是否存在 |
filter_id() | 返回指定過濾器名稱的過濾器 ID |
filter_input() | 獲取外部變數(例如,來自表單輸入)並可選地對其進行過濾 |
filter_input_array() | 獲取外部變數(例如,來自表單輸入)並可選地對其進行過濾 |
filter_list() | 返回所有支援的過濾器名稱列表 |
filter_var() | 使用指定的過濾器過濾變數 |
filter_var_array() | 獲取多個變數並對其進行過濾 |
PHP 預定義過濾器常量
常量 | 描述 |
---|---|
INPUT_POST | POST 變數 |
INPUT_GET | GET 變數 |
INPUT_COOKIE | COOKIE 變數 |
INPUT_ENV | ENV 變數 |
INPUT_SERVER | SERVER 變數 |
FILTER_DEFAULT | 不執行任何操作,可選地剝離/編碼特殊字元。等同於 FILTER_UNSAFE_RAW |
FILTER_FLAG_NONE | 不允許任何標誌 |
FILTER_FLAG_ALLOW_OCTAL | 僅適用於以零 (0) 開頭的輸入作為八進位制數。此選項僅允許後續數字為 0-7 |
FILTER_FLAG_ALLOW_HEX | 僅適用於以 0x/0X 開頭的輸入作為十六進位制數。此選項僅允許後續字元為 a-fA-F0-9 |
FILTER_FLAG_STRIP_LOW | 剝離 ASCII 值小於 32 的字元 |
FILTER_FLAG_STRIP_HIGH | 剝離 ASCII 值大於 127 的字元 |
FILTER_FLAG_ENCODE_LOW | 編碼 ASCII 值小於 32 的字元 |
FILTER_FLAG_ENCODE_HIGH | 編碼 ASCII 值大於 127 的字元 |
FILTER_FLAG_ENCODE_AMP | 編碼 & |
FILTER_FLAG_NO_ENCODE_QUOTES | 不編碼 ' 和 " |
FILTER_FLAG_EMPTY_STRING_NULL | 未使用 |
FILTER_FLAG_ALLOW_FRACTION | 允許小數點 (.) 作為數字中的小數分隔符 |
FILTER_FLAG_ALLOW_THOUSAND | 允許逗號 (,) 作為數字中的千位分隔符 |
FILTER_FLAG_ALLOW_SCIENTIFIC | 允許在數字中使用 e 或 E 表示科學計數法 |
FILTER_FLAG_PATH_REQUIRED | URL 必須包含路徑部分 |
FILTER_FLAG_QUERY_REQUIRED | URL 必須包含查詢字串 |
FILTER_FLAG_IPV4 | 允許 IP 地址為 IPv4 格式 |
FILTER_FLAG_IPV6 | 允許 IP 地址為 IPv6 格式 |
FILTER_FLAG_NO_RES_RANGE | 對於保留的 IPv4 範圍:0.0.0.0/8、169.254.0.0/16、127.0.0.0/8 和 240.0.0.0/4,以及保留的 IPv6 範圍:::1/128、::/128、::ffff:0:0/96 和 fe80::/10,進行驗證失敗。 |
FILTER_FLAG_NO_PRIV_RANGE | 對於私有 IPv4 範圍:10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16,以及以 FD 或 FC 開頭的 IPv6 地址,進行驗證失敗。 |
FILTER_FLAG_EMAIL_UNICODE | 允許電子郵件地址的本地部分包含 Unicode 字元 |
FILTER_REQUIRE_SCALAR | 值必須是標量 |
FILTER_REQUIRE_ARRAY | 值必須是陣列 |
FILTER_FORCE_ARRAY | 將標量值視為陣列,其中標量值是唯一的元素 |
FILTER_NULL_ON_FAILURE | 對於無法識別的布林值,在失敗時返回 NULL |
FILTER_VALIDATE_BOOLEAN | 驗證布林值 |
FILTER_VALIDATE_EMAIL | 將值驗證為有效的電子郵件地址 |
FILTER_VALIDATE_FLOAT | 將值驗證為浮點數 |
FILTER_VALIDATE_INT | 將值驗證為整數 |
FILTER_VALIDATE_IP | 將值驗證為 IP 地址 |
FILTER_VALIDATE_MAC | 將值驗證為 MAC 地址 |
FILTER_VALIDATE_REGEXP | 根據正則表示式驗證值 |
FILTER_VALIDATE_URL | 將值驗證為 URL |
FILTER_SANITIZE_ADD_SLASHES | 作為 FILTER_SANITIZE_MAGIC_QUOTES 的替代品新增 |
FILTER_SANITIZE_EMAIL | 從電子郵件地址中刪除所有非法字元 |
FILTER_SANITIZE_ENCODED | 刪除/編碼特殊字元 |
FILTER_SANITIZE_MAGIC_QUOTES | 應用 addslashes()。 PHP 7.3.0 中已棄用,PHP 8.0.0 中已移除 |
FILTER_SANITIZE_NUMBER_FLOAT | 刪除除數字、+-符號以及可選的 .、eE 之外的所有字元 |
FILTER_SANITIZE_NUMBER_INT | 刪除除數字和 +- 符號之外的所有字元 |
FILTER_SANITIZE_SPECIAL_CHARS | 刪除特殊字元 |
FILTER_SANITIZE_STRING | 從字串中移除標籤/特殊字元。PHP 8.1.0 中已棄用 |
FILTER_SANITIZE_STRIPPED | FILTER_SANITIZE_STRING 的別名。PHP 8.1.0 中已棄用 |
FILTER_SANITIZE_URL | 移除 URL 中的所有非法字元 |
FILTER_UNSAFE_RAW | 不執行任何操作,可選地移除/編碼特殊字元 |
FILTER_CALLBACK | 呼叫使用者定義的函式來過濾資料 |