PHP: применить общий фильтр с filter_var_array? - PullRequest
2 голосов
/ 22 февраля 2012

Я пробовал различные комбинации и перестановки 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 ]

1 голос
/ 13 мая 2015

Хороший синтаксис filter_var_array ()

Второй аргумент 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 голосов
/ 22 февраля 2012

Вы должны быть в состоянии объединить их с помощью бинарных операторов, как в FILTER_SANITIZE_STRING & FILTER_FLAG_STRIP_LOW, но я еще не проверял это.

...