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 条件失败。

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

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

其次,如果你想要像 0.01 或 0.999 这样的数字,你需要一个 float,整数没有小数,所以你应该 actually使用 floatval().

你遇到的问题是,当 0.01 被转换为整数时,它会四舍五入(到 0),大致等于 null,你需要使用 floatval() 并使用像这样使用 === 的精确比较:floatval($_GET["nearkm"]) === 0.