0

如果值与正确的过滤器匹配,有没有办法在 php 中使用 filter_var 返回 true,否则返回 false?

我想要得到的是:

filter_var('email@example.com', FILTER_VALIDATE_EMAIL) => true
filter_var('http://google.com', FILTER_VALIDATE_URL) => true
filter_var('http://google', FILTER_VALIDATE_URL) => false
filter_var('test', FILTER_VALIDATE_EMAIL) => false

谢谢!

4

4 回答 4

2

将这个函数包装在满足您要求的函数周围怎么样?例如:

function my_filter_var($a, $b) {
    if(filter_var($a, $b)===false){
        return false;
    }
    else {
        return true;
    }
}

但是我不建议使用它,因为当您无需实际调用函数即可实现您想要的(因为调用函数很昂贵)时,它是对函数的不必要调用。发布此功能只是因为您想要以某种格式输出。

所以这个函数将按如下方式工作:

my_filter_var('email@example.com', FILTER_VALIDATE_EMAIL) => true
my_filter_var('http://google.com', FILTER_VALIDATE_URL) => true
my_filter_var('http://google', FILTER_VALIDATE_URL) => false
my_filter_var('test', FILTER_VALIDATE_EMAIL) => false

你应该使用我在函数内部所做的,而不是创建一个函数。

于 2015-01-13T09:06:14.683 回答
1

我会使用这样简单的东西:

(bool) filter_var('email@example.com', FILTER_VALIDATE_EMAIL);

这将始终导致布尔值:https ://3v4l.org/BvAdE

另请注意,您说您希望您的第三个示例返回false但是http://google是一个完全有效的 URL。

于 2015-01-13T09:10:59.580 回答
0

如果有效,则返回过滤值,否则返回 false,因此这应该有效。

$valid_email = filter_var('email@example.com', FILTER_VALIDATE_EMAIL) ? true : false;

网址相同

$valid_url = filter_var('http://google.com', FILTER_VALIDATE_URL) ? true : false; 
于 2015-01-13T09:04:45.780 回答
0

从文档:

返回过滤后的数据,如果过滤器失败,则返回 FALSE。

所以:

if( filter_var('email@example.com', FILTER_VALIDATE_EMAIL) === FALSE ){
  // Invalid
}else {
  // Valid
}

是有效的代码。查看filter_var 的文档以获取更多信息。

于 2015-01-13T09:04:52.563 回答