2012-02-22 67 views
2

我已经试过各种组合和filter_var_array()排列还没有找到这个问题的答案:PHP:应用通用过滤器filter_var_array?

给出一个相当大的关联数组,我需要与FILTER_FLAG_STRIP_LOW标志适用于FILTER_SANITIZE_STRING所有元素的数组。

所以:

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()一个共同的过滤器?

+0

我有你一个答案。见下文。如果这是一个很好的答案,我会很欣赏这些观点。谢谢! – 2015-05-13 13:05:41

回答

1

Good filter_var_array() syntax

第二filter_var_array()的参数需要是适当的$定义为每PHP手册。

例子:

只要确保你把标志各自为阵里面。选项可以在数组中,但标志需要被看作是由管道分隔的整个事物。

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

您应该能够通过他们的二元运算符,结合在FILTER_SANITIZE_STRING & FILTER_FLAG_STRIP_LOW,但我没有测试过这呢。

+0

不幸的是,这是行不通的。它似乎破坏了阵列并丢失了所有的数据。 – 2012-02-22 17:43:44