在PHP中验证数字

Abh*_*hvi -6 php validation

我正在寻找一个PHP函数,它将帮助我验证数字.我发现是is_numeric()is_float()在PHP.

这适用于数值和浮点数,但不验证负数.

我想验证的数字是 12345, 12345.6789, 0, -12345.6789, -12345

Jon*_*Jon 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
}
Run Code Online (Sandbox Code Playgroud)

这仍然接受1e10,但它不会接受0xff等等.


Bab*_*aba 5

您可以使用 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)