filter_input_array (php) 条目的两个可能过滤器

two possible filters for entry of filter_input_array (php)

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

如果有两个过滤器一起可以完全满足我的要求:

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

伪代码:

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

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