PHPintval()
には、文字列を整数に変換する関数があります。ただし、文字列が整数であることを事前に確認して、間違っている場合にユーザーに役立つエラーメッセージを表示できるようにしたいと考えています。PHP には がありますis_int()
が、 のような文字列の場合は false を返します"2"
。
PHP にはis_numeric()
関数がありますが、数値が double の場合は true を返します。double の場合は false を返し、int の場合は true を返すものが必要です。
例えば:
my_is_int("2") == TRUE
my_is_int("2.1") == FALSE
ベストアンサー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
入力が 型の場合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);
}