我正在使用PHP编写REST接口来提交和查询来自气象站的数据。 Windspeed / temperature / etc值通过POST请求作为float(例如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 :(得分:0)
为了允许零值使用=== FALSE
(即严格等于false):
if (filter_var(...) === FALSE)
{
throw new Exception('WIND (wind) WRONG VALUE TYPE [received '.$params['wind'].'].');
}