PHP 有一个intval()函数可以将字符串转换为整数。但是,我想事先检查该字符串是否为整数,以便在错误时向用户提供有用的错误消息。PHP 有is_int(),但是对于像"2".
intval()
is_int()
"2"
PHP 有这个is_numeric()功能,但如果数字是双精度数,它将返回 true。我想要一些对双精度返回 false,但对 int 返回 true 的东西。
is_numeric()
例如:
my_is_int("2") == TRUE my_is_int("2.1") == FALSE
怎么用ctype_digit?
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。
int
is_int
如果您关心负数,那么您需要检查输入是否有前面的-,如果是,请调用输入字符串ctype_digit的 a substr。这样的事情会做到这一点:
-
substr
function my_is_int($input) { if ($input[0] == '-') { return ctype_digit(substr($input, 1)); } return ctype_digit($input); }