PHP接受0.01如输入

问题描述:

我有一个具有一个HTML形式:PHP接受0.01如输入

<input type="number" step="any" name="nearkm" value="000.000" onfocus="if(this.value == '000.000') { this.value = ''; }"></> 

的输入可以是从000.001到999.999

所述的search.php代码来验证正确的输入如下:

if (!isset($_GET["nearkm"]) || empty($_GET["nearkm"]) || (int) $_GET["nearkm"] == null) 

该代码适用于输入包括和大于1,但是,如果我输入0.01或任何小于1的值,它会失败if条件。

我的问题是,有没有更好的方法来检查输入,例如,使用正则表达式或其他函数?

+1

(int)0.01 == 0 == null – 2015-04-02 02:46:14

+0

'$ _GET [“nearkm”]'返回一个字符串。如果您需要检查它是否是数字,请尝试使用PHP函数'is_numeric()':http://php.net/manual/en/function.is-numeric.php如果if_null和is_float是if你需要。 – 2015-04-02 02:56:17

首先,您应该使用PHP提供的intval()函数来安全地将字符串转换为整数。

其次,如果你想号码,如0.01或0.999你需要一个浮动,整数没有小数,所以你应该实际上是使用floatval()

您遇到的问题是,当0.01强制转换为整数它是圆的(0),这是松散等于null,你需要使用floatval()并使用通过===像这样精确的对比: floatval($_GET["nearkm"]) === 0

+0

为了更精确一点:浮点值转换为int不会被舍入,但小数位将被截断。 – 2015-04-02 03:37:03