Skip to content

PHP_notes

Steve Gallo edited this page Apr 7, 2017 · 1 revision

PHP 5.3 filter_var() does not properly filter the value bool(false)

PHP 5.3 filter_var() does not properly filter the value bool(false). This behavior is fixed 5.4.8 (see https://bugs.php.net/bug.php?id=49510)

In 5.3:

$a = array(0, 1, true, false, "true", "false", "totalcrap");
foreach ($a as $v) { print var_dump($v); }
int(0)
int(1)
bool(true)
bool(false)
string(4) "true"
string(5) "false"
string(9) "totalcrap"
php > foreach ($a as $v) { print var_dump(filter_var($v, FILTER_VALIDATE_BOOLEAN,
FILTER_NULL_ON_FAILURE)); }
bool(false)
bool(true)
bool(true)
NULL
bool(true)
bool(false)
NULL

In 5.5.9:

$a = array(0, 1, true, false, "true", "false", "totalcrap");
foreach ($a as $v) { print var_dump(filter_var($v, FILTER_VALIDATE_BOOLEAN,
FILTER_NULL_ON_FAILURE)); }
bool(false)
bool(true)
bool(true)
bool(false)
bool(true)
bool(false)
NULL

Solution

return ( false === $value ? false : filter_var($value, $filter, $options) );

Clone this wiki locally