我正在使用filter_input_array
函数来清除从HTML表单提交的$_POST
个变量。
问题在于,在某些情况下我使用FILTER_SANITIZE_STRING
标志并且它允许空字符串,即$value = ''
,但如果该表单字段留空,在某些情况下,它需要是保留为NULL
。
当数据库查询因外键检查失败而失败时,会出现此问题,因为该字段是作为空字符串而不是NULL
提交的。
所以在我出去重写一大堆查询以进行空字符串检查之前,有没有人可以告诉我如何配置这个filter_input_array
输入数组,以便对这个输入字符串进行清理并且还有一些文本值或NULL
,但不是''
。
感谢。
答案 0 :(得分:4)
您可以创建自定义过滤器:
$filter = array('filter' => FILTER_CALLBACK, 'options' => function ($input) {
$filtered = filter_var($input, FILTER_SANITIZE_STRING);
return $filtered ? $filtered: null;
});
然后在$args
中使用它:
$args = array(
'value' => $filter
);
$inputs = filter_input_array(INPUT_POST, $args);