我希望输入只接受“真”或“假”,所以我试图用它FILTER_VALIDATE_BOOLEAN
来做到这一点,
if (!filter_var('false', FILTER_VALIDATE_BOOLEAN))
{
$error = true;
echo 'error';
}
它回显错误消息,但不应该。
我怎样才能使它正确?
我希望输入只接受“真”或“假”,所以我试图用它FILTER_VALIDATE_BOOLEAN
来做到这一点,
if (!filter_var('false', FILTER_VALIDATE_BOOLEAN))
{
$error = true;
echo 'error';
}
它回显错误消息,但不应该。
我怎样才能使它正确?
看看手册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'"