php - 是否可以将 PHP 的 filter_input() 过滤器标志与 AND/OR 结合使用?

标签 php

各种filter flags可以与 PHP 的 filter_input() 一起使用功能。

例如,如果我想检索标量 POST 字段的值,我可以使用默认值,而无需指定过滤器。或者,如果我正在处理数组 POST 字段,我会使用相应的过滤器:

$scalar = filter_input(INPUT_POST, 'field');
$array = filter_input(INPUT_POST, 'field', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);

是否可以将过滤器标志与 ANDOR 结合使用?例如,使用 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/

相关文章:

php - 迭代 JSON 对象内的数组

php - 如何一次将大量数据插入mySQL数据库?

php - PayPal IPN 通知 Protection_eligibility=Ineligible

php - 通过OOP和Mysql进行用户注册

php - 在非对象上调用成员函数 execute()

PHP正则表达式: No ending delimiter '^' found in

php - 列出显示 index.php 的文件夹中的文件

php - ajax 填充数据库并在 html 表中显示结果的问题

php - is_dir 不识别文件夹

php - 在 php 中使用 imageMagick 预览 Pdf