Руководство PHP: filter_var_array ()
mixed filter_var_array ( array $data [, mixed $definition [, bool $add_empty = true ]] )
Может ли что-то подобное для аргумента $ definition вызова filter_var_array()
работать? (синтаксис массива> = 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()
? Например: (выписал длинный путь, хотя я мог бы сделать это с помощью цикла).
$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 ( |
).
$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] ];