1. 程式人生 > >PHP清洗過濾器Sanitize filters

PHP清洗過濾器Sanitize filters

名稱 id 說明 標記flags
字串過濾器(string) 513 去除字串中標籤(不會進行上下文的推斷,如果找不到>會將<後面的字元都去除),可以選擇去除或者編碼特殊字元。 FILTER_FLAG_NO_ENCODE_QUOTES
FILTER_FLAG_STRIP_LOW
FILTER_FLAG_STRIP_HIGH
FILTER_FLAG_STRIP_BACKTICK
FILTER_FLAG_ENCODE_LOW
FILTER_FLAG_ENCODE_HIGH
FILTER_FLAG_ENCODE_AMP
字串過濾器(stripped) 513 string過濾器的別名。  
編碼過濾器(encoded) 514 對值進行url編碼,可以選擇去除或者編碼特殊字元。 FILTER_FLAG_STRIP_LOW
FILTER_FLAG_STRIP_HIGH
FILTER_FLAG_STRIP_BACKTICK
FILTER_FLAG_ENCODE_LOW
FILTER_FLAG_ENCODE_HIGH
特殊字元過濾器(special_chars) 515 對值進行html轉義(包括<>&和ASCII值小於32的字元),可以選擇去除或者編碼特殊字元。

FILTER_FLAG_STRIP_LOW
FILTER_FLAG_STRIP_HIGH
FILTER_FLAG_STRIP_BACKTICK

FILTER_FLAG_ENCODE_HIGH

原值過濾器(unsafe_raw) 516 不對值進行任何轉義,可以選擇去除或者編碼特殊字元。 FILTER_FLAG_STRIP_LOW
FILTER_FLAG_STRIP_HIGH
FILTER_FLAG_STRIP_BACKTICK
FILTER_FLAG_ENCODE_LOW
FILTER_FLAG_ENCODE_HIGH
FILTER_FLAG_ENCODE_AMP
郵件地址過濾器(email) 517 去掉字母、數字和!#$%&'*+-=?^_`{|}[email protected][]以外的所有字元(PHP5.3.1起反斜槓也會被刪除)。  
url地址過濾器(url) 518 去掉字母、數字和$-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=以外的所有字元。  
整型過濾器(number_int) 519 去掉正負號和數字以外的所有字元,要注意的是過濾器的返回值是字串型別。  
浮點過濾器(number_float) 520 去掉正負號和數字以外的所有字元,可以選擇保留小數點、千位符和科學計數符。

FILTER_FLAG_ALLOW_FRACTION
FILTER_FLAG_ALLOW_THOUSAND
FILTER_FLAG_ALLOW_SCIENTIFIC

轉義過濾器(magic_quotes) 521 對值使用addslashes函式進行轉義。  
全部特殊字元過濾器(full_special_chars) 522 對值使用設定了ENT_QUOTEShtmlspecialchars函式進行轉義。如果檢測到不在預設字符集中的無效字元會返回空字串。 FILTER_FLAG_NO_ENCODE_QUOTES

在使用以上過濾器作為預設過濾器時,標記預設設定為FILTER_FLAG_NO_ENCODE_QUOTES,需要顯示的將filter.default_flags配置0來使轉義引號生效。

<?php
$str="<b> ` & this's a filter test".chr(31)."</b>";
$num="1.23e5";
$string_ops=array(
   'flags'=>FILTER_FLAG_NO_ENCODE_QUOTES|FILTER_FLAG_ENCODE_LOW|FILTER_FLAG_STRIP_BACKTICK|FILTER_FLAG_ENCODE_AMP|FILTER_FORCE_ARRAY
);
$encoded_ops=array(
    'flags'=>FILTER_FLAG_ENCODE_LOW|FILTER_FLAG_STRIP_BACKTICK
);
$special_ops=array(
    'flags'=>FILTER_FLAG_STRIP_LOW|FILTER_FLAG_STRIP_BACKTICK
);
$raw_ops=array(
    'flags'=>FILTER_FLAG_STRIP_LOW|FILTER_FLAG_STRIP_BACKTICK
);
$float_ops=array(
    'flags'=>FILTER_FLAG_ALLOW_SCIENTIFIC
);
var_dump(filter_var($str,FILTER_SANITIZE_STRING,$string_ops));
var_dump(filter_var($str,FILTER_SANITIZE_ENCODED,$encoded_ops));
var_dump(filter_var($str,FILTER_SANITIZE_SPECIAL_CHARS,$special_ops));
var_dump(filter_var($str,FILTER_UNSAFE_RAW,$raw_ops));
var_dump(filter_var($str,FILTER_SANITIZE_EMAIL));
var_dump(filter_var($str,FILTER_SANITIZE_URL));
var_dump(filter_var($num,FILTER_SANITIZE_NUMBER_INT));
var_dump(filter_var($num,FILTER_SANITIZE_NUMBER_FLOAT,$float_ops));
var_dump(filter_var($str,FILTER_SANITIZE_MAGIC_QUOTES));
var_dump(filter_var($str,FILTER_SANITIZE_FULL_SPECIAL_CHARS));
var_dump(htmlspecialchars($str,ENT_QUOTES));
?>