NULL должно было быть FILTER_NULL_ON_FAILURE .Но это не делает то, что вы хотите.Почему вам нужно, чтобы оно было NULL?
Причина, по которой вы получаете строку (0), заключается в том, что поле post доступно в форме.Поле просто пустое.Если вы хотите, чтобы оно было NULL , поле не должно быть там.
$foo = filter_input(INPUT_POST, 'foo', FILTER_SANITIZE_STRING, array('options' => array('default' => NULL)));
var_dump($foo);
Так что используйте strlen ().Или убедитесь, что поле не там, когда оно вам не нужно.