我可以将这些过滤器标志放在一个数组中吗?

时间:2015-12-14 21:43:07

标签: php

$ipAdd=$_POST['ip'];
if (filter_var($ipAdd, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_NO_RES_RANGE | FILTER_FLAG_NO_PRIV_RANGE) === false) { 
    echo "Invalid IP Address";   
}
else {
    echo 'Your IP is: '.$ipAdd;
}

1 个答案:

答案 0 :(得分:0)

选项可以按照您在评论中描述的数组传递,但并不完全像您想要的那样。请参阅http://php.net/manual/en/function.filter-var.php了解正确的格式。

$options = array(
    'flags' => FILTER_FLAG_IPV4 | FILTER_FLAG_NO_RES_RANGE | FILTER_FLAG_NO_PRIV_RANGE
);
$ipAdd = isset($_POST['ip'])?$_POST['ip']:"";
if(filter_var($ipAdd, FILTER_VALIDATE_IP, $options) === false){
    echo "Invalid IP Address";   
} else {
    echo 'Your IP is: '.$ipAdd;
}

您必须使用管道(|),因为它们是按位运算符。过滤器标志等于二进制值。