PHP过滤器-Filter

作者: PHP的艺术编程 | 来源:发表于2018-12-06 14:36 被阅读21次

Filter

1.用途

  • PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入。
  • 外部数据包含:表单输入、cookies、服务器变量、数据库查询结果

2.Filter函数

函数 描述
filter_has_var() 检查是否存在指定==输入类型==的变量。
filter_id() 返回指定过滤器的 ID 号。
filter_input() 从脚本外部获取输入,并进行过滤
filter_input_array() 从脚本外部获取多项输入,并进行过滤。
filter_list() 返回包含所有得到支持的过滤器的一个数组
filter_var() 获取一个变量,并进行过滤
filter_var_array() 获取多项变量,并进行过滤

3.过滤器

过滤器的详细文档地址

(1)filter_id和filter——list

过滤器有ID和名称属性,我们可以 通过==fileer_id==函数返回过滤器的ID(参数是过滤器的名称)

fliter_list是返回所有的到支持的过滤器的一个数组

<?php
print_r(filter_list());

//输出结果
Array
 (
 [0] => int
 [1] => boolean
 [2] => float
 [3] => validate_regexp
 [4] => validate_url
 [5] => validate_email
 [6] => validate_ip
 [7] => string
 [8] => stripped
 [9] => encoded
 [10] => special_chars
 [11] => unsafe_raw
 [12] => email
 [13] => url
 [14] => number_int
 [15] => number_float
 [16] => magic_quotes
 [17] => callback
 )
(2)在过滤器中的来源输入--这里统称“来源模组”
  • INPUT_GET
  • INPUT_POST
  • INPUT_COOKIE
  • INPUT_ENV
  • INPUT_SERVER
  • INPUT_SESSION
  • INPUT_REQUEST
(3) 检查变量存在

filter_has_var()——检查是否存在指定输入类型的变量

参数 描述
type 必需,要检查的类型“来源模组”
variable 必需。要检查的变量。
filter_has_var(INPUST_POST, "eamail");
(4)真正过滤功能(净化)的

带 var 的是对变量的过滤,input是对输入量的过滤(也可以理解成表单提交的数据)

带array的是多个变量的过滤

  • filter_var(variable, filter, options)
参数 描述
variable 必需。规定要过滤的变量。
filter 可选。规定要使用的过滤器的 ID。
options 规定包含标志/选项的数组。检查每个过滤器可能的标志和选项。
<?php
$var=300;

$int_options = array(
"options"=>array
 (
 "min_range"=>0,
 "max_range"=>256
 )
);

if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))
 {
 echo("Integer is not valid");
 }
else
 {
 echo("Integer is valid");
 }
?>

就像上面的代码一样,选项必须放入一个名为 "options" 的相关数组中。如果使用标志,则不需在数组内。

  • filter_input(input_type, variable, filter, options)
参数 描述
input_type 必需。规定输入类型。参见上面的列表中可能的类型。
variable 规定要过滤的变量。
filter 可选。规定要使用的过滤器的 ID。默认是FILTER_SANITIZE_STRING。请参考手册,获得可能的过滤器。过滤器 ID 可以是 ID 名称 (比如 FILTER_VALIDATE_EMAIL),或 ID 号(比如 274)
options 规定包含标志/选项的数组。检查每个过滤器可能的标志和选项。
//以下是option是过滤器ID的用法(过滤之前最好先用filter_has_var判断变量是否存在)
filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)
  • filter_var_array(array, args)
参数 描述
array 必需。规定带有字符串键的数组,包含要过滤的数据。
args 可选。规定过滤器参数数组。合法的数组键是变量名。合法的值是过滤器 ID,或者规定过滤器、标志以及选项的数组。该参数也可以是一个的过滤器 ID,如果是这样,输入数组中的所有值由指定过滤器进行过滤。
<?php
$arr = array
 (
 "name" => "peter griffin",
 "age" => "41",
 "email" => "peter@example.com",
 );

$filters = array
 (
 "name" => array
  (
  "filter"=>FILTER_CALLBACK,
  "flags"=>FILTER_FORCE_ARRAY,
  "options"=>"ucwords"
  ),
 "age" => array
  (
  "filter"=>FILTER_VALIDATE_INT,
  "options"=>array
   (
   "min_range"=>1,
   "max_range"=>120
   )
  ),
 "email"=> FILTER_VALIDATE_EMAIL,
 );

print_r(filter_var_array($arr, $filters));
?>
  • filter_input_array(input_type, args)
参数 描述
input_type 必需。规定输入类型。参见上面的列表中可能的类型。
args 可选。规定过滤器参数数组。合法的数组键是变量名。合法的值是过滤器ID,或者规定过滤器、标志以及选项的数组。该参数也可以是一个单独的过滤器 ID,如果是这样,输入数组中的所有值由指定过滤器进行过滤
<?php
$filters = array
 (
 "name" => array
  (
  "filter"=>FILTER_CALLBACK,
  "flags"=>FILTER_FORCE_ARRAY,
  "options"=>"ucwords"
  ),
 "age" => array
  (
  "filter"=>FILTER_VALIDATE_INT,
  "options"=>array
   (
   "min_range"=>1,
   "max_range"=>120
   )
  ),
 "email"=> FILTER_VALIDATE_EMAIL,
 );
print_r(filter_input_array(INPUT_POST, $filters));
?>

filter_input_array() 函数的第二个参数可以是数组或单一过滤器的 ID。
如果该参数是单一过滤器的 ID,那么这个指定的过滤器会过滤输入数组中所有的值。
如果该参数是一个数组,那么此数组必须遵循下面的规则:
必须是一个关联数组,其中包含的输入变量是数组的键(比如 "age" 输入变量)
此数组的值必须是过滤器的 ID ,或者是规定了过滤器、标志以及选项的数组

4.使用 Filter Callback

通过使用 FILTER_CALLBACK 过滤器,可以调用自定义的函数,把它作为一个过滤器来使用。这样,我们就拥有了数据过滤的完全控制权。

在下面的例子中,我们使用了一个自定义的函数把所有 "_" 转换为空格:

<?php
function convertSpace($string)
{
return str_replace("_", " ", $string);
}

$string = "Peter_is_a_great_guy!";

echo filter_var($string, FILTER_CALLBACK, array("options"=>"convertSpace"));
?>
以上代码的结果是这样的:

Peter is a great guy!
例子解释:

上面的例子把所有 "_" 转换成空格:

创建一个把 "_" 替换为空格的函数
调用 filter_var() 函数,它的参数是 FILTER_CALLBACK 过滤器以及包含我们的函数的数组

总结

Filter有过滤函数和过滤利器,具体的过滤函数(有四个可以净化)使用和过滤器(有ID、名称、标记等)使用可以查看文档

相关文章

  • TP3使用FILTER过滤器

    php过滤器有验证用户输入,校验变量类型等作用 public function text_filter(){ ...

  • Spring系列之Filter and Interceptor

    一、Filter 过滤器 1. 什么是Filter 过滤器? Filter 的含义Filter 过滤器是一个对象 ...

  • 2020-12-27

    --- #### **1. php如何校验IP地址** filter_var() 函数 通过指定的过滤器过滤一...

  • java基础-day42-Filter、Listener和Bas

    Filter ,Listener和BaseServlet 1. Filter过滤器 1.1 Filter过滤器的配...

  • Spring Boot使用过滤器Filter

    Spring Boot使用过滤器Filter >> 过滤器Filter介绍Filter也称为过滤器,是处于客户端与...

  • Filter

    Java****中的****Filter****过滤器 Filter****简介 Filter也称之为过滤器,它是...

  • 22. 过滤器

    11 过滤器(Filter) 什么是过滤器(Filter) Filter:过滤器,用来过滤网站的数据; 处理中文乱...

  • PHP 过滤器(Filter)

    PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入。 什么是 PHP 过滤器? 1)PHP 过滤器用...

  • PHP过滤器-Filter

    Filter 1.用途 PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入。 外部数据包含:表单输入...

  • Interceptor和Filter区别

    过滤器(Filter) Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的...

网友评论

    本文标题:PHP过滤器-Filter

    本文链接:https://www.haomeiwen.com/subject/frxwcqtx.html