我有一个HTML表单,它有:
<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条件将失败。
我的问题是,有没有更好的方法来检查输入,例如,使用regex或其他函数?
首先,您应该使用PHP提供的intval()函数将字符串安全地转换为整数。
其次,如果你想要0.01或0.999这样的数字,你需要一个浮点,整数没有小数,所以你应该实际上使用floatval()。
您遇到的问题是,当0.01被强制转换为整数时,它被四舍五入(到0),大致等于null
,您需要使用floatval()
,并使用===
进行精确比较,如floatval($_GET["nearkm"]) === 0
。