Php filter_var函数

时间:2011-04-28 04:05:19

标签: php

我知道函数filter_var()返回true或false但是当我的意思是我有

if( filter_var( $value , FILTER_VALIDATE_INT ) )
    echo 'value is sanitized';
else 
    echo 'value is sanitized';

任何人都能解释这个函数何时返回true或false?

3 个答案:

答案 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']定义的范围内。

另见: