PHP5过滤器功能第2部分

在上一篇有关PHP过滤器函数的文章之后,还有另外两个过滤器函数需要一些额外的说明。这些函数是filter_var_array()和filter_input_array()。

它们的工作方式与filter_var()和几乎相同,filter_input()但是它们接受数组作为输入。这使您可以同时清除或验证许多不同的变量。

使用这些函数的第一步是创建一个参数数组。这是数据标识符的关联数组,可让您为不同的值设置过滤器和消毒剂标志。例如,假设将使用以下数组。

$data = array(

 'rowid' => '10',

 'level' => '23',

 'text' => 'some <span>text</span>',

 'dataAray' => array('2', '23', '10', '12'),

);

为了确保rowid始终是整数,像这样在参数数组中使用了过滤器标志FILTER_VALIDATE_INT。

$args = array('rowid' => FILTER_VALIDATE_INT);

需要对数组中的级别值执行相同的操作。但是,我还需要确保该值在一定范围内。这是通过使用内部数组完成的,该数组包含参数filter(用于验证整数)和options(用于定义最小和最大范围)。

$args = array(

 'rowid' => FILTER_VALIDATE_INT,

 'level' => array(

  'filter' => FILTER_VALIDATE_INT,

  'options' => array(

   'min_range' => 1,

   'max_range' => 30

  )

 )

);

该函数数组不会返回此参数数组中未包含的任何内容。因此,目前函数将完全错过数组的text和dataArray部分。由于文本变量中包含一些HTML,因此我想使用FILTER_SANITIZE_SPECIAL_CHARS将其转换为字符编码的文本。dataArray必须是所有整数,我想强制将其设置为数组,即使不是。即使变量是数组,FILTER_VALIDATE_INT过滤器也会

$args = array(

 'rowid' => FILTER_VALIDATE_INT,

 'level' => array(

  'filter' => FILTER_VALIDATE_INT,

  'options' => array(

   'min_range' => 1,

   'max_range' => 30

  )

 ),

 'text' => FILTER_SANITIZE_ENCODED,

 'dataAray' => array(

  'filter' => FILTER_VALIDATE_INT,

  'flags' => FILTER_FORCE_ARRAY,

 )

);

放置好数组后,我们现在就可以将其放入filter_var_array()和过滤/清理数据了。

$myinputs = filter_var_array($data, $args);

var_dump($myinputs);

这将产生以下结果。

array(4) {

 ["rowid"]=>

 int(10)

 ["text"]=>

 string(42) "some <span>text</span>"

 ["level"]=>

 int(23)

 ["dataAray"]=>

 array(4) {

  [0]=>

  int(2)

  [1]=>

  int(23)

  [2]=>

  int(10)

  [3]=>

  int(12)

 }

}

在filter_input_array()函数中使用此命令是相同的,但是在这种情况下,不是使用数据作为第一个参数,而是使用INPUT_GET,INPUT_POST,INPUT_COOKIE,INPUT_SERVER,INPUT_ENV,INPUT_SESSION或INPUT_REQUEST中的一个。以下示例使用INPUT_POST从发布请求中检索数据。

$myinputs = filter_input_array(INPUT_POST, $args);

var_dump($myinputs);

回调过滤器可用于将数据从一种形式更改为另一种形式,基本上可以创建您自己的消毒剂。假设我们有一个HTML字符串,但是我们只想将三个字符从其非编码形式更改为编码形式。这些字符是和“,分别转换为<,>和”。

为了通过过滤器运行回调函数,我们使用FILTER_CALLBACK标志和一个options数组,该数组指向我们要运行的函数。

function replaceTags($html){

 return str_replace(array('<', '>', '"'),array('&lt;', '&gt;', '&quot;'),$html);

}

 

$html = 'Some <span style="padding:10px;">text</span>';

 

echo filter_var($html,FILTER_CALLBACK,array('options'=>'replaceTags'));

当filter_var()函数在这段代码中运行时,它将HTML中的三个字符替换为它们的编码等效项。

尽管php.net网站上提供了很多信息,但是在页面上有一个很棒的页面,phpro.org其中包含与该过滤功能一起使用的每个过滤器和消毒剂的示例。

以上是 PHP5过滤器功能第2部分 的全部内容, 来源链接: utcz.com/z/353637.html

回到顶部