文字列が int であり、double ではないことをどのように確認しますか? 質問する

文字列が int であり、double ではないことをどのように確認しますか? 質問する

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_digitsubstr入力文字列の。次のようにすればそれができます:

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

おすすめ記事