2012-02-22 51 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