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条件。
我的问题是,有没有更好的方法来检查输入,例如,使用正则表达式或其他函数?
答
首先,您应该使用PHP提供的intval()函数来安全地将字符串转换为整数。
其次,如果你想号码,如0.01或0.999你需要一个浮动,整数没有小数,所以你应该实际上是使用floatval()。
您遇到的问题是,当0.01强制转换为整数它是圆的(0),这是松散等于null
,你需要使用floatval()
并使用通过===
像这样精确的对比: floatval($_GET["nearkm"]) === 0
。
+0
为了更精确一点:浮点值转换为int不会被舍入,但小数位将被截断。 – 2015-04-02 03:37:03
(int)0.01 == 0 == null – 2015-04-02 02:46:14
'$ _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