Все врут. И документация php тоже.
Обнаружил “странный” код, который судя по офф. документации работать так как ожидал автор не должен:
$filtered = filter_var($raw, FILTER_VALIDATE_INT, array('flags' => FILTER_NULL_ON_FAILURE));
В документации флаг FILTER_NULL_ON_FAILURE
указан только для фильтра FILTER_VALIDATE_BOOLEAN
. Странно конечно, но это не единственная странность в php вообще и в filter в частности. Документированная странность… Однако код работает именно так, как ожидал автор – возвращает null если $raw не прошёл валидацию. И не только для INT – STRING, FLOAT… IP. В общем все проверенные фильтры возвращают нулл_он_файлуре.
Ну ок, значит автор не совсем… Но возможно что-то поправили в свежих версиях php и забыли обновить документацию? Может расчитывать на такое поведение не стоит? Оказывается это работает минимум с версии 5.2.1.
Не доверяй и проверяй…