is_real()是PHP中的一个函数,早期版本中用于检测变量是否为浮点数。在功能上它与is_float()或is_double()等价。例如:
$price = 12.99;
if (is_real($price)) {
echo "价格是浮点数";
}
虽然这段代码在PHP 7.4之前可以正常运行,但现代PHP版本中运行这段代码将产生一个弃用警告,甚至在将来的版本中会完全移除这个函数。
在表单处理过程中,用户提交的数据通常以字符串的形式通过$_POST或$_GET接收。直接使用is_float()或is_real()判断这些值通常会返回false,因为字符串即使内容是数字,也不是浮点类型。
为了解决这个问题,我们通常需要先将字符串转换为浮点数,再进行类型验证。示例如下:
$input = $_POST['price'];
$floatVal = floatval($input);
if (is_float($floatVal)) {
echo "输入是有效的浮点数";
} else {
echo "请输入正确的浮点数格式";
}
但这种方式有个潜在问题:floatval()会尝试将任何字符串转换为浮点数,即使输入不合法,也可能返回0.0。因此,更稳妥的方式是使用filter_var()配合FILTER_VALIDATE_FLOAT进行验证。
$input = $_POST['price'];
if (filter_var($input, FILTER_VALIDATE_FLOAT) !== false) {
echo "输入是有效的浮点数";
} else {
echo "请输入正确的浮点数格式";
}
这个方法可以有效避免诸如“abc12.34”这类混合输入被误认为有效浮点数的问题。
假设我们有一个用于提交价格的表单,提交地址为https://gitbox.net/submit.php:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$price = $_POST['price'];
if (filter_var($price, FILTER_VALIDATE_FLOAT) !== false) {
echo "价格提交成功,数值为:" . floatval($price);
// 这里可以继续进行数据库写入或其他逻辑
} else {
echo "错误:请输入合法的浮点数!";
}
}
?>
<form method="POST" action="https://gitbox.net/submit.php">
<label for="price">输入价格:</label>
<input type="text" name="price" id="price" required>
<input type="submit" value="提交">
</form>