私は次のphpコードを書きました、
<?php
$k ="123e5";
if(is_numeric($k)){
echo "is number";
}
else{
echo "is not a number";
}
?>
文字列に e が存在するため、予想される出力は 「数字ではありません」です。しかし、出力"is number"を得ました。なぜそれが起こるのですか?解決策を見つけるのを手伝ってください。
is_numericのドキュメントに従って:
数値文字列は、オプションの符号、任意の桁数、オプションの小数部、およびオプションの指数部で構成されます。したがって、+0123.45e6 は有効な数値です。16 進数 (例: 0xf4c3b00c)、2 進数 (例: 0b10100111001)、8 進数 (例: 0777) 表記も使用できますが、符号、小数、指数部分は使用できません。
したがって、正しい出力が与えられます。
整数のみを探していると思います。それから使用is_int()
します。
ctype_digit() を使用して数字をチェックできます
http://www.php.net/manual/en/function.ctype-digit.php
<?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
?>
ユーザー入力を検証するには、PHP の組み込みフィルター関数を使用する必要があります。次のハンドブックのページをご覧ください: http://www.php.net/manual/en/book.filter.php