我知道函数filter_var()返回true或false但是当我的意思是我有
时if( filter_var( $value , FILTER_VALIDATE_INT ) )
echo 'value is sanitized';
else
echo 'value is sanitized';
任何人都能解释这个函数何时返回true或false?
答案 0 :(得分:0)
永远不会返回true
。如果false
不是整数,它将返回$value
。
答案 1 :(得分:0)
正如@deceze所说,你要么得到清理后的变量,要么在函数出错的情况下为FALSE。
现在,PHP让你做一些有趣的事情:如果定义了一个变量并在条件语句中使用,那么任何无法隐式转换为布尔值FALSE的东西(即空字符串或实际的假值)都将被认为等效于布尔值TRUE。我们一直在使用这种东西,比如迭代从数据库中检索的数据集。
因此,如果您致电filter_var
并成功获取$value
的值,则围绕if()
调用的filter_var
语句将使用$value
的值因为它是有条件的。
HTH。
答案 2 :(得分:0)
如果函数成功,filter_var()
的返回值第一个参数的值,否则它将返回 false
。
$x = 5;
$y = 3;
$z = 11;
$t = 'abc';
$options = array(
'options' => ['min_range' => 5, 'max_range' => 10],
'flags' => FILTER_REQUIRE_SCALAR
);
if (false === filter_var($x, FILTER_VALIDATE_INT, $options)) {
// filter_var will return the value of $x (5)
// No exceptions will be thrown
throw new \InvalidArgumentException("$x is not a valid input");
}
if (false === filter_var($y, FILTER_VALIDATE_INT, $options)) {
throw new \InvalidArgumentException("$y is not a valid input");
}
if (false === filter_var($z, FILTER_VALIDATE_INT, $options)) {
throw new \InvalidArgumentException("$z is not a valid input");
}
if (false === filter_var($t, FILTER_VALIDATE_INT, $options)) {
throw new \InvalidArgumentException("$t is not a valid input");
}
唯一不会引发异常的变量是$x
,因为它是一个整数,它在$options['options']
定义的范围内。
另见: