虚假的FILTER_VALIDATE_BOOLEAN
问题描述:
输入值我想要的输入Accpet头“真”或“假”而已,所以我试图用FILTER_VALIDATE_BOOLEAN
要做到这一点,虚假的FILTER_VALIDATE_BOOLEAN
if (!filter_var('false', FILTER_VALIDATE_BOOLEAN))
{
$error = true;
echo 'error';
}
呼应的错误信息,但它不应该。
我该怎么做才对?
答
看一看手动
你的语法/用法是正确的。 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'"
''false''不是布尔值,它是一个字符串。 – BoltClock 2012-02-02 15:52:28
在这种情况下,'false'应该只是'false',否则它将被视为一个字符串。 – Treffynnon 2012-02-02 16:05:34
它仍然返回错误信息与'假'... – laukok 2012-02-02 16:14:24