【问题标题】:two possible filters for entry of filter_input_array (php)filter_input_array (php) 条目的两个可能过滤器
【发布时间】:2022-01-12 19:46:37
【问题描述】:

例如,我想检查一个数组的值是电子邮件地址还是适合正则表达式。

如果有两个过滤器可以一起做我想要的:

  • 是否可以使用这两个现有的过滤器,如果第一个不适合,请检查第二个是否适合?
  • 还是我必须创建一个filter callbac

用于创建用例: 登录情况,您可以使用电子邮件地址或用户名,但两者的输入字段相同。

伪代码:

    $options = [
        'username' =>
        [
            'options' => [
                
                'filter' => FILTER_VALIDATE_EMAIL | FILTER_VALIDATE_REGEXP,
                'regexp' => '/([A-Za-z0-9_-]{1,25})/'],
        ],
    ];


    $filteredPost = filter_input_array(INPUT_POST, $options);

如果这样的事情是可能的,怎么办?

【问题讨论】:

  • 我觉得应该是'options' => ['regexp' => '/.../']
  • 谢谢我更新了伪代码。目前的结果是它接受一切。

标签: php arrays validation input filter


【解决方案1】:

我认为您不能像这样组合多个过滤器——您只能使用| 将过滤器与标志组合起来。

此外,您还没有正确形成选项数组。正则表达式需要进一步嵌套。

$options = [
    'username' => [
        'filter' => FILTER_VALIDATE_EMAIL | FILTER_VALIDATE_REGEXP,
        'options' => [
            'regexp' => '/([A-Za-z0-9_-]{1,25})/'],
    ],
];

$options 的每个元素都是一个包含 filteroptions 键的数组。

【讨论】:

  • 真的。我的错。可悲的是,这并不能解决问题。这样,它只是接受电子邮件。我开始认为我的问题不是 sloveable / 我需要为它创建一个回调函数。
  • 是的,我认为您不能将不同的过滤器与| 结合使用。您只能使用| 将过滤器与标志组合起来。
猜你喜欢
  • 1970-01-01
  • 2022-11-10
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 2011-05-23
  • 1970-01-01
相关资源
最近更新 更多