データベースからの文字列値があります。
この値が整数か文字列かを確認する必要があります。と
を試しましたが、どちらも必要なものではありません。 is_int
is_numeric
is_int
値が文字列型の場合は常に false をis_numeric
返し、値に数値が含まれている場合は true を返します。
私が使用しているのはpreg_match('/^\d+$/',$value)
で、この場合の簡単な解決策を探しています。
データベースからの文字列値があります。
この値が整数か文字列かを確認する必要があります。と
を試しましたが、どちらも必要なものではありません。 is_int
is_numeric
is_int
値が文字列型の場合は常に false をis_numeric
返し、値に数値が含まれている場合は true を返します。
私が使用しているのはpreg_match('/^\d+$/',$value)
で、この場合の簡単な解決策を探しています。
$stringIsAnInteger = ctype_digit($string);
私はあなたの方法が最良のものを見つけます。
単純な正規表現では複雑なものは何も見当たらないので、あなたの代わりに、これ以上単純なものを探すことはありません。
複雑さについて言えば、発信者コードだけに限定しないでください。
1回の関数呼び出しと同じくらい短い場合があります。しかし、基礎となるコードについては確信が持てません。これは非常に複雑であり、重要なことですが、ここで指定されているすべての関数と同様に、いくつかの問題があります。
独自のソリューションはシンプルで堅牢です。
更新:
「単純な文字列関数をパフォーマンスに使用できる正規表現を使用しないでください」というすべての発言は、前世紀から直接のものです。
使用できますctype_digit()
— 数字をチェックします。指定された文字列 text のすべての文字が数値かどうかを確認します。
例 1
<?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.
例 2
<?php
$numeric_string = '42';
$integer = 42;
ctype_digit($numeric_string); // true
ctype_digit($integer); // false (ASCII 42 is the * character)
is_numeric($numeric_string); // true
is_numeric($integer); // true
?>