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('<', '>', '"'),$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