PHP過濾器函式
filter_has_var:檢測是否存在指定型別的變數。接受兩個引數,第一個是變數型別,第二個是變數名。
filter_id:返回與某個特定名稱的過濾器相關聯的id。
filter_list:返回所支援的過濾器列表。
filter_input:通過名稱獲取特定的外部變數,並且可以選擇通過過濾器對其進行過濾。接受四個引數,第一個引數為變數型別,第二個引數是變數名,第三個引數是可選的要使用的過濾器的id,預設為FILTER_DEFAULT,即不進行過濾。第四個引數是可選的過濾器使用的選項的關聯陣列,或按位區分的標識。如果獲取成功則返回指定的變數,如果失敗則返回false,如果指定的變數不存在則返回null。如果使用了FILTER_NULL_ON_FAILURE標記則當變數不存在時返回false,過濾失敗返回null。
filter_input_array:獲取一系列外部變數,並且可以選擇通過過濾器對其進行過濾。接受四個引數,第一個引數為變數型別,第二個引數為可選的要使用的過濾器。可以是一個數組:陣列的鍵為一個包含變數名的字串,陣列的值可以是過濾器型別常量,也可以是一個指明瞭過濾器、標識和選項的陣列,此陣列有效的鍵為filter指明過濾器型別,flags指明要用於過濾器的標識或者options指明要用於過濾器的選項。還可以只是一個過濾器型別常量,所有的變數都會使用這個過濾器。第三個引數為PHP5.4新增的可選引數,用於指定如果指定的鍵不存在時,將其值設定為null,預設為true。如果處理成功,返回包含所有變數的陣列,失敗則返回false。如果指定的變數不存在則返回null。如果使用了FILTER_NULL_ON_FAILURE標記則當變數不存在時返回false,過濾失敗返回null。
filter_var:使用特定的過濾器過濾一個變數。接受三個引數,第一個為帶過濾的變數,第二個引數為可選的要使用的過濾器的id,預設為FILTER_DEFAULT,即不進行過濾。第三個引數為可選的過濾器使用的選項的關聯陣列,或按位區分的標識。如果過濾器接受選項,可以通過陣列的flags指定這些標識。對於回撥型的過濾器,應該傳入回撥函式的名稱,回撥函式必須接受一個待過濾的值,並返回一個過濾後的值。
filter_var_array:獲取多個變數並且可以選擇通過過濾器對其進行過濾。接受三個引數,第一個為變數陣列,鍵為變數名,值為變數值,即待過濾的值。第二個引數為可選的要使用的過濾器。可以是一個數組:陣列的鍵為一個包含變數名的字串,陣列的值可以是過濾器型別常量,也可以是一個指明瞭過濾器、標識和選項的陣列,此陣列有效的鍵為filter指明過
<?php
header("Content-type: text/html; charset=utf-8");
$char_br="<br/>";
$str="QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
$num=rand(5,20);
$random_test_value=substr(str_shuffle($str),rand(5,strlen($str)),$num);
$args=array(
"id" =>array('filter' => FILTER_VALIDATE_INT,
'options'=> array('min_range' => 1, 'max_range' => 10)
),
"missing"=>FILTER_SANITIZE_ENCODED,
"searched"=>FILTER_SANITIZE_ENCODED
);
$vars=filter_input_array(INPUT_GET,$args);
echo "<a href='?searched=$random_test_value&id=$num'>Search again.</a>$char_br";
if(filter_has_var(INPUT_GET,"searched")){
$search_html = $vars["searched"];
echo "You have searched for $search_html.$char_br";
}else{
echo "You searched nothing$char_br";
}
var_dump($vars);
$options=array(
'options'=>array(
'default' => 5,
'min_range' => 1,
'max_range' => 10
),
'flags' => FILTER_FLAG_ALLOW_OCTAL,
);
echo "id filtered by filter_var is:".filter_var($vars["id"],FILTER_VALIDATE_INT,$options)."$char_br";
echo "invoke filter_var_array filter agagin:$char_br";
var_dump(filter_var_array(filter_input_array(INPUT_GET),$args));
echo "支援的過濾器:$char_br id=>name $char_br";
foreach(filter_list() as $v){
echo filter_id($v),"=>$v$char_br";
}
?>