Как насчет использования 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";
}
}
?>
Приведенный выше пример выдаст:
The string 1820.20 does not consist of all digits.
The string 10002 consists of all digits.
The string wsl!12 does not consist of all digits.
Это будет работать, только если вы всегда вводите строку:
$numeric_string = '42';
$integer = 42;
ctype_digit($numeric_string); // true
ctype_digit($integer); // false
Если ваш ввод может быть типа int
, то объедините ctype_digit
с is_int
.
Если вам небезразличны отрицательные числа, вам нужно проверить ввод для предшествующего -
, и если это так, вызвать ctype_digit
для substr
входной строки. Что-то вроде этого сделало бы это:
function my_is_int($input) {
if ($input[0] == '-') {
return ctype_digit(substr($input, 1));
}
return ctype_digit($input);
}