我正在寻找一个可以帮助我验证号码的PHP函数。
我发现PHP中的is_numeric()
和is_float()
。
这适用于数值和浮点数,但不验证负数。
我要验证的数字是
12345
,
12345.6789
,
0
,
-12345.6789
,
-12345
答案 0 :(得分:6)
is_numeric
适用于您提供的所有输入(它也会接受1e10
和0xff
等输入。
您可能会发现使用filter_var
代替它更好:
$value = filter_var($input, FILTER_VALIDATE_FLOAT);
if ($value !== false) {
// was a valid float, do something with it
}
仍然接受1e10
,但不接受0xff
等。
答案 1 :(得分:5)
您可以使用is_numeric
$list = array("1e4",12345,12345.6789,0,- 12345.6789,- 12345,'0xa');
foreach ( $list as $value ) {
var_dump(is_numeric($value));
}
输出
boolean true
boolean true
boolean true
boolean true
boolean true
boolean true
boolean true
^-- This should not be true
*注意*
is_numeric
并非100%可靠,您应该使用filter_var
而不是Jon推荐
foreach ( $list as $value ) {
var_dump(is_float(filter_var($value, FILTER_VALIDATE_FLOAT)));
}
输出
boolean true
boolean true
boolean true
boolean true
boolean true
boolean true
boolean false
^-- can you see its false
答案 2 :(得分:0)
过滤器var很棒,但我遇到了一个严重的问题,它在0上返回false,所以这将解决这个问题。 它接受所有实数,因此als在'0xa'
上返回false(filter_var($ n,FILTER_VALIDATE_FLOAT)||($ n === 0)||($ n ==='0'));
如果你只想要整数
(filter_var($ i,FILTER_VALIDATE_INT)||($ i === 0)||($ i ==='0'));