is_float未检测到浮点数

use*_*510 -1 php forms floating-point floating-point-precision

我正在is_float()检查输入的数字是否是浮点数,但echo()输入时它会不断抛出该消息3.00。还有其他解决方案吗?还是我做错了什么?

这是我的代码:

PHP:

if(!is_float($_POST["gpa"])){
    echo "GPA must be in #.## format.";
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<input type="text" name="gpa" />
Run Code Online (Sandbox Code Playgroud)

Cha*_*ois 5

表单输入始终是字符串,因此if条件将始终返回您指定的错误消息。利用filter_var()代替。

if(filter_var($_POST['gpa'], FILTER_VALIDATE_FLOAT) === false) {
    echo "GPA must be in #.## format.";
}
Run Code Online (Sandbox Code Playgroud)

如果您想验证的格式,你需要使用注册 ular 防爆 pressions。

([0-9]{1,})\.([0-9]{2,2})
Run Code Online (Sandbox Code Playgroud)

您可以单独使用RegEx并省去了filter_var(),因为它也可以这样做。

if(preg_match('/([0-9]{1,})\.([0-9]{2,2})/', $_POST['gpa']) == 0) {
    echo "GPA must be in #.## format.";
}
Run Code Online (Sandbox Code Playgroud)