小编典典

如何检查字符串是 int,但不是 double 等?

all

PHP 有一个intval()函数可以将字符串转换为整数。但是,我想事先检查该字符串是否为整数,以便在错误时向用户提供有用的错误消息。PHP
is_int(),但是对于像"2".

PHP 有这个is_numeric()功能,但如果数字是双精度数,它将返回 true。我想要一些对双精度返回 false,但对 int 返回 true
的东西。

例如:

my_is_int("2") == TRUE
my_is_int("2.1") == FALSE

阅读 56

收藏
2022-07-31

共1个答案

小编典典

怎么用ctype_digit

从手册:

<?php
$strings = array('1820.20', '10002', 'wsl!12');
foreach ($strings as $testcase) {
    if (ctype_digit($testcase)) {
        echo "The string $testcase consists of all digits.\n";
    } else {
        echo "The string $testcase does not consist of all digits.\n";
    }
}
?>

上面的示例将输出:

字符串 1820.20 不包含所有数字。
字符串 10002 由所有数字组成。
字符串 wsl!12 不包含所有数字。

这仅在您的输入始终是字符串时才有效:

$numeric_string = '42';
$integer        = 42;

ctype_digit($numeric_string);  // true
ctype_digit($integer);         // false

如果您的输入可能是 type int,则与
结合ctype_digit使用is_int

如果您关心负数,那么您需要检查输入是否有前面的-,如果是,请调用输入字符串ctype_digit的 a
substr。这样的事情会做到这一点:

function my_is_int($input) {
  if ($input[0] == '-') {
    return ctype_digit(substr($input, 1));
  }
  return ctype_digit($input);
}
2022-07-31