有没有办法在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
谢谢!
答案 0 :(得分: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
你应该使用我在函数内部所做的,而不是创建一个函数。
答案 1 :(得分: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;
答案 2 :(得分:0)
来自文档:
返回过滤后的数据,如果过滤器失败,则返回FALSE。
因此:
if( filter_var('email@example.com', FILTER_VALIDATE_EMAIL) === FALSE ){
// Invalid
}else {
// Valid
}
是有效的代码。查看the documentation for filter_var了解更多信息。
答案 3 :(得分:0)
我会使用这样简单的东西:
(bool) filter_var('email@example.com', FILTER_VALIDATE_EMAIL);
总是会产生一个布尔值:https://3v4l.org/BvAdE
另请注意,您说您希望第三个示例返回false
,但http://google
是完全有效的网址。