is_numeric 错误地识别了浮点数(这是一个随机字符串)

a c*_*der 1 php floating-point scientific-notation numeric

我正在变量中查找数字,如果找不到,我会引用该字符串 - 否则它不会被引用。例子:

$x = '000916846E38516';
if (is_numeric($x)) { echo 'Numeric!'; } else { echo 'Non-numeric!'; }
Run Code Online (Sandbox Code Playgroud)

恰巧该字符串是科学记​​数法,而 PHP 将其识别为数字。我应该如何解决这个问题?只是检查是否有字母字符会更好,还是有另一个类似于 is_numeric 的函数可以排除科学数字?

Joh*_*nde 6

is_int()并且ctype_digit()应该都适合你。

filter_var()可能会更好,因为您可以设置标志来验证浮点数 ( FILTER_VALIDATE_FLOAT) 和整数 ( FILTER_VALIDATE_INT)