各种filter flags可以与 PHP 的 filter_input()
一起使用功能。
例如,如果我想检索标量 POST 字段的值,我可以使用默认值,而无需指定过滤器。或者,如果我正在处理数组 POST 字段,我会使用相应的过滤器:
$scalar = filter_input(INPUT_POST, 'field');
$array = filter_input(INPUT_POST, 'field', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
是否可以将过滤器标志与 AND
或 OR
结合使用?例如,使用 OR
:
$value = filter_input(INPUT_POST, 'field', FILTER_DEFAULT, FILTER_REQUIRE_SCALAR || FILTER_REQUIRE_ARRAY);
一个可能的用例是遍历 POST 字段,其中一些可以是数组。例如,
foreach ($fieldSet as $field)
{
$value = filter_input(INPUT_POST, $field, FILTER_DEFAULT, FILTER_REQUIRE_SCALAR || FILTER_REQUIRE_ARRAY);
...
}
最佳答案
稍微不同的方法怎么样:
$filtered = array();
//loop through all the posted values
foreach($_POST as $key => $value) {
//apply a different filter for arrays and scalars
if(is_array($value)) {
$filtered[$key] = filter_input(INPUT_POST, $key, {filters for array});
}
else {
$filtered[$key] = filter_input(INPUT_POST, $key, {filters for scalar});
}
}
如果您想排除发送的任何其他内容,您还可以将其与一组每个字段的过滤器结合使用:
//define the filters
$filters = array(
'field1' => FILTER_DEFAULT | FILTER_REQUIRE_SCALAR,
'field2' => FILTER_DEFAULT | FILTER_REQUIRE_ARRAY,
...etc
);
$filtered = array();
foreach($_POST as $key => $value) {
//only include a value if a filter definition exists for the key
if(array_key_exists($key, $filters)) {
$filtered[$key] = filter_input(INPUT_POST, $key, $filters[$key]);
}
}
关于php - 是否可以将 PHP 的 filter_input() 过滤器标志与 AND/OR 结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39596215/