将$ _POST参数验证为float或int

时间:2015-03-18 22:19:51

标签: php rest

我正在使用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()中使用的特定过滤器?

1 个答案:

答案 0 :(得分:0)

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

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