使用filter_var_array()/ filter_input_array的php代码无法正常工作

时间:2014-04-14 15:25:40

标签: php regex filter-var

使用ideone.com测试下面的php代码会产生2个错误

  

" PHP警告:filter_var_array():' regexp'第18行和第34行/home/RhLGYU/prog.php中缺少选项;

该行为$myinputs = filter_var_array($data, $args)

这可能是我的初学者经历,但我不理解错误信息,例如,我不知道下面的代码出了什么问题。我检查了2个正则表达式定义(REGEXP_MULTIPLE_NAMESREGEXP_PHONE_NL),它们没问题。

我怀疑$args的定义中存在错误,但我无法找到它(当我与http://www.w3schools.com/Php/filter_validate_regexp.asp中的示例进行比较时)。

PHP代码:

define("REGEXP_MULTIPLE_NAMES", "/^[a-zA-Z\s-]+$/i");

//Expression to check Dutch phone numbers. Number must start with zero and number of digits should be 10. Different area and country codes are allowed.
define("REGEXP_PHONE_NL", "/(^\+[0-9]{2}|^\+[0-9]{2}\(0\)|^\(\+[0-9]{2}\)\(0\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\-\s]{10}$)/"); 

$data = array(
    'city' => 'The hague',
    'telephonenr' => '0701234567'
);
$args = array(
    'city' => array(
        'filter' => FILTER_VALIDATE_REGEXP,
        array(
            "options" => array(
                "regexp" => REGEXP_MULTIPLE_NAMES
            )
        )
    ),
    'telephonenr' => array(
        'filter' => FILTER_VALIDATE_REGEXP,
        array(
            'options' => array(
                "regexp" => REGEXP_PHONE_NL
            )
        )
    )
);

$myinputs = filter_var_array($data, $args);
print_r($myinputs);

1 个答案:

答案 0 :(得分:2)

查看php手册我认为它的结构如下:

$args = array(
'city' => array(
    'filter' => FILTER_VALIDATE_REGEXP,
    'options' => array(
        "regexp" => REGEXP_MULTIPLE_NAMES
    )
),
'telephonenr' => array(
    'filter' => FILTER_VALIDATE_REGEXP,
    'options' => array(
        "regexp" => REGEXP_PHONE_NL
    )
  )
);