Ознакомьтесь с инструкцией http://www.php.net/manual/en/filter.filters.validate.php
Ваш синтаксис / использование верны. filter_var('false', FILTER_VALIDATE_BOOLEAN)
однако не проверяет шаблон, он преобразует входную строку в соответствующее введенное значение.
Чтобы сделать это явным:
var_dump(filter_var('false', FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
Возвращает логическое значение false
.
var_dump(filter_var('true', FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
Возвращает логическое значение true
.
var_dump(filter_var('wrong', FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
Возвращает NULL
.
Вот почему я добавил второй вариант. Входная строка не классифицируется как true
и false
.
Так что вам действительно нужно проверить с === NULL
ваше состояние. Это даст вам результат, который вы, вероятно, хотели бы:
if (filter_var('false', FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) === NULL)
{
echo "Input did not evaluate to boolean 'false' nor 'true'"