📜  PHP | filter_input_array()函数(1)

📅  最后修改于: 2023-12-03 14:45:15.438000             🧑  作者: Mango

PHP | filter_input_array()函数

简介

filter_input_array() 函数将一个一维数组中的多个输入过滤器应用到指定的输入变量,返回一个过滤后的变量数组。

filter_input_array() 函数必须始终有两个参数,第一个参数指定要过滤的输入类型,比如 INPUT_GETINPUT_POSTINPUT_COOKIE 等。第二个参数是一个包含过滤规则的数组,规则包括过滤器类型、选项和过滤器标志。

语法

filter_input_array ( int $type , mixed $definition [, bool $add_empty = true ] ) : mixed

参数

以下是 filter_input_array() 函数的参数列表:

  1. $type:必填,指定要过滤的输入类型,可以使用 INPUT_GETINPUT_POSTINPUT_COOKIEINPUT_SERVERINPUT_ENV 等 PHP 预定义常量。

  2. $definition:必填,一个数组,定义的过滤器类型、选项和过滤器标志,包括:

    • filter:必需。是要使用的过滤器 ID。
    • flags:可选。规定如何处理无效输入。这里的有效值由过滤器指定。在使用多个过滤器时,可以使用此选项来避免由于无效输入而破坏其他验证方法。此选项是自 PHP 5.2.0 起添加的。
    • options:可选。选项是由某些过滤器使用并定义的,具体取决于所使用的过滤器。
  3. $add_empty:可选,布尔值,表示是否将空值添加到结果数组。默认值为 true

返回值

filter_input_array() 函数将返回过滤后的结果数组,如果未找到任何符合条件的输入变量,则返回 NULL

示例

下面是一个使用 filter_input_array() 进行数据过滤的示例:

<?php
//定义要验证的规则
$filters = array(
    'name' => array('filter' => FILTER_SANITIZE_STRING),
    'email' => array('filter' => FILTER_VALIDATE_EMAIL),
    'age' => array('filter' => FILTER_VALIDATE_INT,
                    'options' => array('min_range' => 1, 'max_range' => 120)),
    'url' => array('filter' => FILTER_VALIDATE_URL),
);

//将过滤器应用到 $_POST
$data = filter_input_array(INPUT_POST, $filters);

//输出过滤后的结果
print_r($data);
?>

以上代码将从 $_POST 中获取数据,并应用定义好的过滤器规则。例如,'name' 的过滤器类型为 FILTER_SANITIZE_STRING'email' 的过滤器类型为 FILTER_VALIDATE_EMAIL'age' 的过滤器类型为 FILTER_VALIDATE_INT,并且限制年龄必须在 1 到 120 之间,'url' 的过滤器类型为 FILTER_VALIDATE_URL

最后,输出过滤后的结果。如果输入不符合规则,则对应的键值将会是 NULL

总结

filter_input_array() 是 PHP 中用于过滤和验证用户输入的重要函数,它可以方便地将多个输入过滤器应用到指定的输入变量中。开发者可以根据不同情况,定义不同的过滤器规则,从而达到保护应用程序的目的。