带有FILTER_SANITIZE_STRING的PHP filter_input_array允许空字符串

时间:2014-08-11 21:10:51

标签: php

我正在使用filter_input_array函数来清除从HTML表单提交的$_POST个变量。

问题在于,在某些情况下我使用FILTER_SANITIZE_STRING标志并且它允许空字符串,即$value = '',但如果该表单字段留空,在某些情况下,它需要是保留为NULL

当数据库查询因外键检查失败而失败时,会出现此问题,因为该字段是作为空字符串而不是NULL提交的。

所以在我出去重写一大堆查询以进行空字符串检查之前,有没有人可以告诉我如何配置这个filter_input_array输入数组,以便对这个输入字符串进行清理并且还有一些文本值或NULL,但不是''

感谢。

1 个答案:

答案 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);