I know that the function filter_var() returns true or false but when I mean if I have
if( filter_var( $value , FILTER_VALI开发者_JS百科DATE_INT ) )
echo 'value is sanitized';
else
echo 'value is sanitized';
Can anyone explain when this function returns true or false?
It will never return true. It will return false if $value is not an integer.
As @deceze says, you either get the sanitized variable back, or FALSE if the function errors out.
Now, PHP lets you do something interesting: if a variable is defined and is used in a conditional statement, anything that could not be implicitly cast to a Boolean value of FALSE (i.e. an empty string or an actual false value) will be considered equivalent to a Boolean value of TRUE. We use this sort of thing all the time when, say, iterating over a dataset retrieved from a database.
So, if you call filter_var and successfully get a value back for $value, the if() statement surrounding the call to filter_var uses the value of $value as it's conditional.
HTH.
The return value of filter_var() is the value of the first argument if the function succeeds, otherwise it will return 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");
}
The only variable that will not throw an exception is $x because it's an integer and it's inside the range defined by $options['options'].
See also:
- http://php.net/manual/en/filter.filters.validate.php
- http://php.net/manual/en/filter.constants.php
加载中,请稍侯......
精彩评论