我正在使用is_float()
检查输入的号码是否为浮点数,但是当我输入echo()
时,它会不断抛出3.00
消息。还有其他解决方案吗?或者我做错了什么?
这是我的代码:
PHP:
if(!is_float($_POST["gpa"])){
echo "GPA must be in #.## format.";
}
HTML:
<input type="text" name="gpa" />
答案 0 :(得分:5)
表单输入始终是字符串,因此if条件将始终返回您指定的错误消息。请改用filter_var()
。
if(filter_var($_POST['gpa'], FILTER_VALIDATE_FLOAT) === false) {
echo "GPA must be in #.## format.";
}
如果您要验证格式,则需要使用注册 ular Ex 加注。
([0-9]{1,})\.([0-9]{2,2})
您可以单独使用RegEx并忘记filter_var()
,因为它也是如此。
if(preg_match('/([0-9]{1,})\.([0-9]{2,2})/', $_POST['gpa']) == 0) {
echo "GPA must be in #.## format.";
}
答案 1 :(得分:3)
试试这个:
$num = 2.6;
if($num === floatval($num)){
echo 'is float';
}else{
echo 'is not';
}
其他方式是正则表达式:
$num = '345.56678';//post is string
$patt = '/^\d+\.{1}\d+$/';
$resp = preg_match($patt,$num);
if($resp){
echo 'is float';
}else{
echo 'is not';
}
答案 2 :(得分:2)
查找给定变量的类型是否为float。
要测试变量是数字还是数字字符串(例如表单输入,始终是字符串),必须使用is_numeric()。
根据定义,您的$_POST["gpa"]
是一个字符串,而不是一个浮点数。执行var_dump($_POST["gpa"])
答案 3 :(得分:2)
验证字符串中浮点值的正确方法是:
if( !filter_var($_POST["gpa"], FILTER_VALIDATE_FLOAT) ) echo 'error!';