PHP 5.4:我可以在使用filter_var_array()的过滤器中使用多个标志吗? [英] PHP 5.4: Can I use multiple flags with a filter using filter_var_array()?
问题描述
mixed filter_var_array ( array $data [, mixed $definition [, bool $add_empty = true ]] )
用于filter_var_array()
调用的 $ definition 参数的类似内容是否可以正常工作? (数组语法> = PHP5.4)
Can something like this for the $definition argument of a filter_var_array()
call ever work? (array syntax >= 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()
时,一次仅使用一个标志是唯一使用标志的方法吗?例如:(虽然我可以循环执行,但写得很长).
Is using only one flag at a time the only way to use flags when using filter_input_array()
? For example: (written out the long way, although I could do this with a loop).
$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运算符(|
)分隔的整体.
Just make sure you do not put the flags inside their own array. Options can be in an array, but the flags need to be seen as one whole thing separated by the bitwise OR operator (|
).
$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]
];
这篇关于PHP 5.4:我可以在使用filter_var_array()的过滤器中使用多个标志吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!