我正在寻找一个PHP函数,它将帮助我验证数字.我发现是is_numeric()和is_float()在PHP.
这适用于数值和浮点数,但不验证负数.
我想验证的数字是
12345,
12345.6789,
0,
-12345.6789,
-12345
is_numeric对于你提供的所有输入都会正常工作(它也会接受输入,例如1e10,0xff但是).
您可能会发现使用它更好filter_var:
$value = filter_var($input, FILTER_VALIDATE_FLOAT);
if ($value !== false) {
// was a valid float, do something with it
}
Run Code Online (Sandbox Code Playgroud)
这仍然接受1e10,但它不会接受0xff等等.
您可以使用 is_numeric
$list = array("1e4",12345,12345.6789,0,- 12345.6789,- 12345,'0xa');
foreach ( $list as $value ) {
var_dump(is_numeric($value));
}
Run Code Online (Sandbox Code Playgroud)
产量
boolean true
boolean true
boolean true
boolean true
boolean true
boolean true
boolean true
^-- This should not be true
Run Code Online (Sandbox Code Playgroud)
*注意*
is_numeric是不是100%可靠你应该使用filter_var相反的乔恩推荐
foreach ( $list as $value ) {
var_dump(is_float(filter_var($value, FILTER_VALIDATE_FLOAT)));
}
Run Code Online (Sandbox Code Playgroud)
产量
boolean true
boolean true
boolean true
boolean true
boolean true
boolean true
boolean false
^-- can you see its false
Run Code Online (Sandbox Code Playgroud)