PHP清洗過濾器Sanitize filters
阿新 • • 發佈:2018-11-04
名稱 | 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_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 |
轉義過濾器(magic_quotes) | 521 | 對值使用addslashes函式進行轉義。 | |
全部特殊字元過濾器(full_special_chars) | 522 | 對值使用設定了ENT_QUOTES的htmlspecialchars函式進行轉義。如果檢測到不在預設字符集中的無效字元會返回空字串。 | 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));
?>