【问题标题】:How to check if variable is empty using filter_input_array()?如何使用 filter_input_array() 检查变量是否为空?
【发布时间】:2014-02-18 12:42:44
【问题描述】:

我正在验证一个表单,其中某些字段必须采用特定格式,而有些字段必须填写......所以我使用类似

        $trusty = filter_input_array(INPUT_POST , array(
            'status'=>array(
                'filter'=>FILTER_VALIDATE_INT,
                'options'=>array('min_range' => 1, 'max_range' => 3, 'default'=>2)
            ),
            'tags'=>array(
                'filter'=>FILTER_CALLBACK,
                'options'=>function($value) {
                   if (mb_strpos($value, ",") === false) {
                       return trim($value);
                   } else {
                       $tags = explode(",", $value);
                       $tags = array_map(function($val) {
                           return trim($val);
                       }, $tags);
                       return $tags;
                   }
                },
            )   
        ));

验证需要特定格式的人,但我也有字段“标题”和“正文”,它们可以是任何内容,但不应为空。当然我可以单独检查它,但我想在一个地方进行所有验证。我的问题是: 是否有过滤器或标志来检查变量是否为空?

【问题讨论】:

    标签: php validation input


    【解决方案1】:

    可能是这样的:

    $trusty = filter_input_array(INPUT_POST , array(
            'status'=>array(
                'filter'=>FILTER_VALIDATE_INT,
                'options'=>array('min_range' => 1, 'max_range' => 3, 'default'=>2)
            ),
            'tags'=>array(
                'filter'=>FILTER_CALLBACK,
                'options'=>function($value) {
                   if (mb_strpos($value, ",") === false) {
                       return trim($value);
                   } else {
                       $tags = explode(",", $value);
                       $tags = array_map(function($val) {
                           return trim($val);
                       }, $tags);
                       return $tags;
                   }
                },
            ) ,
            'title'=>array(
                'filter'=>FILTER_CALLBACK,
                'options'=>function($value) {
                    return empty($value);
                }
            ) 
        ));
    

    这也应该有效:

    'title'=>array(
        'filter'=>FILTER_CALLBACK,
        'options'=>'empty'
    ) 
    

    【讨论】:

    • 是的,我也想到了,但看起来……不自然。好吧,看来我得顺其自然了。
    【解决方案2】:

    php中有一个检查空变量的函数

        empty ( mixed $var )
    

    你可以看看:this

    【讨论】:

    • 它根本没有回答这个问题。 OP 想知道如何在不直接访问超全局 $_POST、$_GET 等数组的情况下使用 filter_input_array()(可能会建议)。
    猜你喜欢
    • 1970-01-01
    • 2011-05-20
    • 2012-02-05
    • 2022-01-27
    • 2018-07-03
    相关资源
    最近更新 更多