PHP函數(shù)參考30-Filter過濾器擴展函數(shù)



原文:
PHP函數(shù)參考30-Filter過濾器擴展函數(shù) - 9ong
PHP函數(shù)參考31-Reflection反射 - 9ong

Filter介紹

該Filter擴展通過驗證或清理數(shù)據(jù)來篩選數(shù)據(jù)。當數(shù)據(jù)源包含未知(或外部)數(shù)據(jù)(如用戶提供的輸入)時,這特別有用。例如,該數(shù)據(jù)可能來自HTML表單。

過濾主要有兩種:驗證和清洗。

驗證是用來驗證或檢查數(shù)據(jù)是否滿足某些條件。例如,傳入FILTER_VALIDATE_EMAIL將確定數(shù)據(jù)是否是有效的電子郵件地址,但不會改變數(shù)據(jù)本身。

清洗會對數(shù)據(jù)進行清洗,因此它可以通過刪除不需要的字符來改變數(shù)據(jù)。例如,傳入filter_sanitie_email將刪除不適合電子郵件地址包含的字符。也就是說,它不能驗證數(shù)據(jù)。

Filter函數(shù)

  • filter_list — 返回所支持的過濾器列表

    Array
    (
        [0] => int
        [1] => boolean
        [2] => float
        [3] => validate_regexp
        [4] => validate_domain
        [5] => validate_url
        [6] => validate_email
        [7] => validate_ip
        [8] => validate_mac
        [9] => string
        [10] => stripped
        [11] => encoded
        [12] => special_chars
        [13] => full_special_chars
        [14] => unsafe_raw
        [15] => email
        [16] => url
        [17] => number_int
        [18] => number_float
        [19] => magic_quotes
        [20] => callback
    )
    
    
  • filter_id — 返回與某個特定名稱的過濾器相關聯(lián)的id

  • filter_has_var — 檢測是否存在指定類型的變量

    檢查這些輸入:INPUT_GET、 INPUT_POST、 INPUT_COOKIE、 INPUT_SERVER、 INPUT_ENV 里的其中一個的變量。

    var_dump(filter_has_var(INPUT_GET, "name"));
    
  • filter_var — 使用特定的過濾器過濾一個變量

    filter_var( mixed $variable[, int $filter = FILTER_DEFAULT[, mixed $options]] ) : mixed
    
  • filter_var_array — 獲取多個變量并且過濾它們

    不需要重復調用 filter_var() 就能獲取多個變量。

    filter_var數(shù)組形式,輸入變量數(shù)組,通過過濾器數(shù)組進行相應變量的過濾得到新的變量數(shù)組。

    現(xiàn)代web框架都有封裝各自的類似機制的filter過濾器。

    error_reporting(E_ALL | E_STRICT);
    $data = array(
        'product_id'    => 'libgd<script>',
        'component'     => '10',
        'versions'      => '2.0.33',
        'testscalar'    => array('2', '23', '10', '12'),
        'testarray'     => '2',
    );
    
    $args = array(
        'product_id'   => FILTER_SANITIZE_ENCODED,
        'component'    => array('filter'    => FILTER_VALIDATE_INT,
                                'flags'     => FILTER_FORCE_ARRAY, 
                                'options'   => array('min_range' => 1, 'max_range' => 10)
                            ),
        'versions'     => FILTER_SANITIZE_ENCODED,
        'doesnotexist' => FILTER_VALIDATE_INT,
        'testscalar'   => array(
                                'filter' => FILTER_VALIDATE_INT,
                                'flags'  => FILTER_REQUIRE_SCALAR,
                            ),
        'testarray'    => array(
                                'filter' => FILTER_VALIDATE_INT,
                                'flags'  => FILTER_FORCE_ARRAY,
                            )
    
    );
    
    $myinputs = filter_var_array($data, $args);
    
    var_dump($myinputs);
    echo "\n";
    
  • filter_input — 通過名稱獲取特定的外部變量,并且可以通過過濾器處理它

    filter_input( int $type, string $variable_name[, int $filter = FILTER_DEFAULT[, mixed $options]] ) : mixed
    

    除了待檢查變量從INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER或 INPUT_ENV之一中獲取外,其他的過濾器、過濾規(guī)則都和filter_var一樣。

  • filter_input_array — 獲取一系列外部變量,并且可以通過過濾器處理它們

    這個函數(shù)當需要獲取很多變量卻不想重復調用filter_input()時很有用。

Filter過濾器類型

PHP: Types of filters - Manual


原文:
PHP函數(shù)參考30-Filter過濾器擴展函數(shù) - 9ong
PHP函數(shù)參考31-Reflection反射 - 9ong

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
禁止轉載,如需轉載請通過簡信或評論聯(lián)系作者。

相關閱讀更多精彩內容

友情鏈接更多精彩內容