如何检查PHP变量是否包含非数字?

use*_*510 15 php forms string variables

我只是想知道检查PHP变量的任何非数字的方法,是否还检测字符之间的空格?需要确保没有任何奇怪的东西被放入我的表单字段.提前致谢.

Mar*_*rty 21

如果您的意思是只想要一个值来包含数字,那么您可以使用ctype_digit().


Mat*_*oli 18

你可以使用is_numeric():

if ( is_numeric($_POST['foo']) ) {
    $foo = $_POST['foo'];
} else {
    // Error
}
Run Code Online (Sandbox Code Playgroud)

这将检查该值是否为数字,因此它可能包含除数字之外的其他内容:

12
-12
12.1
Run Code Online (Sandbox Code Playgroud)

但这将确保该值是有效数字.

  • 这比`ctype_digit()`有优势,因为它允许小数和负数. (2认同)
  • `is_numeric()`为任何数值返回`true`,也就是说,只要它们描述一个数字,它也可能包含其他字符.`is_numeric()`的可能有效值是:" - 1337","13.37","13e37","0x1337".如您所见,它们包含非数字字符. (2认同)

nic*_*ckf 14

您可以使用 ctype_digit

例如:

if (!ctype_digit($myString)) {
    echo "Contains non-numbers.";
}
Run Code Online (Sandbox Code Playgroud)

  • @Matthieu,它不是*更好*,而是*不同*。 (4认同)
  • `ctype_digit(1)`也将返回**false**,`ctype_digit(" - 1.5")`,所以最好使用`is_numeric()`来处理所有变量类型. (2认同)

Ste*_*roz 10

true如果字符串中有非数字,则返回.它可以检测字母,空格,制表符,新行,不是数字.

preg_match('#[^0-9]#',$variable)
Run Code Online (Sandbox Code Playgroud)