php接受0.01作为输入


php accept 0.01 as input

我有一个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