lau*_*kok 3 php boolean filter-var
我希望输入仅仅是'true'或'false',所以我试图用FILTER_VALIDATE_BOOLEAN它来做,
if (!filter_var('false', FILTER_VALIDATE_BOOLEAN))
{
$error = true;
echo 'error';
}
Run Code Online (Sandbox Code Playgroud)
它回应了错误消息,但它不应该.
我怎么能做对的?
mar*_*rio 15
请查看手册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));
Run Code Online (Sandbox Code Playgroud)
返回布尔值false
.
var_dump(filter_var('true', FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
Run Code Online (Sandbox Code Playgroud)
返回布尔值true
.
var_dump(filter_var('wrong', FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE));
Run Code Online (Sandbox Code Playgroud)
退货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'"
Run Code Online (Sandbox Code Playgroud)