2015-03-18 101 views
1

我正在使用PHP编写REST接口来提交和查询来自气象站的数据。风速/温度/等值通过POST请求作为浮点(例如1.32)来发送,除非它们为零,在这种情况下发送单个'0'数字。

我写了下面的代码来验证输入值:

if (is_numeric($params['wind'])) 
{ 
    if (!filter_var($params['wind'], FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION, $windLimit)) 
    { 
     throw new Exception('WIND (wind) WRONG VALUE TYPE [received '.$params['wind'].'].'); 
    } 
} 
else 
{ 
    throw new Exception('WIND (wind) WRONG TYPE [received '.$params['wind'].'].'); 
} 

这对于非零值效果很好,但究竟何时0 是否有filter_var使用特定的过滤器失效验证( )当值可以是整数或浮点数?

回答

0

为了允许零个值使用=== FALSE(即严格相等为false):

if (filter_var(...) === FALSE) 
{ 
    throw new Exception('WIND (wind) WRONG VALUE TYPE [received '.$params['wind'].'].'); 
}