PHP:使用filter_var_array应用通用过滤器?

时间:2012-02-22 12:21:44

标签: php arrays filter sanitization

我尝试了filter_var_array()的各种组合和排列,但尚未找到答案:

给定一个相当大的关联数组,我需要将FILTER_SANITIZE_STRING FILTER_FLAG_STRIP_LOW标志应用于数组中的所有元素。

所以:

filter_var_array($my_big_array,FILTER_SANITIZE_STRING);

应用FILTER_SANITIZE_STRING过滤器但没有FILTER_FLAG_STRIP_LOW标记。

和...

filter_var_array($my_big_array,FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);

出现错误。

是否可以使用filter_var_array()轻松应用常用过滤器?

2 个答案:

答案 0 :(得分:1)

Good filter_var_array() syntax

根据PHP手册,第二个filter_var_array()参数需要是一个正确的$定义。

示例:

确保将标志放在自己的数组中。选项可以在数组中,但标记需要被视为由管道分隔的整个事物。

   $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]
          ];

答案 1 :(得分:0)

您应该能够通过二元运算符将它们组合起来,就像在FILTER_SANITIZE_STRING & FILTER_FLAG_STRIP_LOW中一样,但我还没有测试过它。