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