PHP 5.4:我可以在使用filter_var_array()的过滤器中使用多个标志吗? [英] PHP 5.4: Can I use multiple flags with a filter using filter_var_array()?

查看:90
本文介绍了PHP 5.4:我可以在使用filter_var_array()的过滤器中使用多个标志吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

PHP手册:filter_var_array()

mixed filter_var_array ( array $data [, mixed $definition [, bool $add_empty = true ]] )

用于filter_var_array()调用的 $ definition 参数的类似内容是否可以正常工作? (数组语法> = PHP5.4)

Can something like this for the $definition argument of a filter_var_array() call ever work? (array syntax >= PHP5.4)

   $def = [
             'firstName' => ['filter' => FILTER_SANITIZE_STRING,
                             'flags'  => [FILTER_REQUIRE_SCALAR | FILTER_FLAG_NO_ENCODE_QUOTES | FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH]],
             'lastName'  => ['filter' => FILTER_SANITIZE_STRING,
                             'flags'  => [FILTER_REQUIRE_SCALAR | FILTER_FLAG_NO_ENCODE_QUOTES | FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH]],
          ];

使用filter_input_array()时,一次仅使用一个标志是唯一使用标志的方法吗?例如:(虽然我可以循环执行,但写得很长).

Is using only one flag at a time the only way to use flags when using filter_input_array()? For example: (written out the long way, although I could do this with a loop).

   $def1 = [
             'firstName' => ['filter' => FILTER_SANITIZE_STRING,
                             'flags'  => FILTER_REQUIRE_SCALAR],
             'lastName'  => ['filter' => FILTER_SANITIZE_STRING,
                             'flags'  => FILTER_REQUIRE_SCALAR]
           ];

   $def2 = [
             'firstName' => ['filter' => FILTER_SANITIZE_STRING,
                             'flags'  => FILTER_FLAG_NO_ENCODE_QUOTES],
             'lastName'  => ['filter' => FILTER_SANITIZE_STRING,
                             'flags'  => FILTER_FLAG_NO_ENCODE_QUOTES]
           ];

   $def3 = [
             'firstName' => ['filter' => FILTER_SANITIZE_STRING,
                             'flags'  => FILTER_FLAG_STRIP_LOW],
             'lastName'  => ['filter' => FILTER_SANITIZE_STRING,
                             'flags'  => FILTER_FLAG_STRIP_LOW]
           ];

   $def4 = [
             'firstName' => ['filter' => FILTER_SANITIZE_STRING,
                             'flags'  => FILTER_FLAG_STRIP_HIGH],
             'lastName'  => ['filter' => FILTER_SANITIZE_STRING,
                             'flags'  => FILTER_FLAG_STRIP_HIGH]
           ];

推荐答案

只需确保不要将标志放在它们自己的数组中即可.选项可以位于数组中,但标志应视为由按位OR运算符(|)分隔的整体.

Just make sure you do not put the flags inside their own array. Options can be in an array, but the flags need to be seen as one whole thing separated by the bitwise OR operator (|).

   $def = [
      'firstName' => ['filter' => FILTER_SANITIZE_STRING,
                       'flags' => FILTER_REQUIRE_SCALAR | FILTER_FLAG_NO_ENCODE_QUOTES | FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH],
      'lastName'  => ['filter' => FILTER_SANITIZE_STRING,
                       'flags' => FILTER_REQUIRE_SCALAR | FILTER_FLAG_NO_ENCODE_QUOTES | FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH]
   ];

这篇关于PHP 5.4:我可以在使用filter_var_array()的过滤器中使用多个标志吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆