Contrary to what documentation implies, the FILTER_NULL_ON_FAILURE seem to affect any validation filter, not just FILTER_VALIDATE_BOOLEAN.
I've been using that since PHP 5.2, and as of PHP 5.6.8 it still works.
It's good to remember that using filter_var is primarily for filtering input values when doing boolean logic comparisons.
Take the following:$value = "12";if(filter_var($value, FILTER_VALIDATE_INT))The above works as intended, except when $value = "0".
I have no clue if it's a blug or if it is as intended, in which case the documentation needs to be fixed.
When the flag is used on a validation filter other than FILTER_VALIDATE_BOOLEAN, as expected the filter will return NULL instead of FALSE upon failure.
This is quite useful when filtering a POST form with filter_input_array(), where you don't want to check what field is invalid and what field is missing.
Just check if NULL is among the returned elements and you're done.
id=40156&edit=2) but it was flagged "not a bug" because these kind of filters are only supposed to filter out illegal characters.
Of course if you were to use FILTER_VALIDATE_FLOAT it would just return that the input is not valid.
Punycode-encoded IDN addresses pass the filter correctly; so before checking for validity, it is necessary to convert the e-mail address to punycode.
Note that if using FILTER_NULL_ON_FAILURE as a flag with the FILTER_VALIDATE_BOOLEAN id then NULL is no longer returned if the variable name is not set in the external variable array. In the description is says that when using the FILTER_NULL_ON_FAILURE flag that ' FALSE is returned only for "0", "false", "off", "no", and ""' an makes no mention of this additional state that can also return false.
"Beware a valid URL may not specify the HTTP protocol" implies a valid URL cannot specify the HTTP protocol.