2

私は次のphpコードを書きました、

<?php
 $k ="123e5";
if(is_numeric($k)){
    echo "is number";
}
else{
    echo "is not a number";
}
?>

文字列に e が存在するため、予想される出力は 「数字ではありません」です。しかし、出力"is number"を得ました。なぜそれが起こるのですか?解決策を見つけるのを手伝ってください。

4

3 に答える 3

4

is_numericのドキュメントに従って:

数値文字列は、オプションの符号、任意の桁数、オプションの小数部、およびオプションの指数部で構成されます。したがって、+0123.45e6 は有効な数値です。16 進数 (例: 0xf4c3b00c)、2 進数 (例: 0b10100111001)、8 進数 (例: 0777) 表記も使用できますが、符号、小数、指数部分は使用できません。

したがって、正しい出力が与えられます。

整数のみを探していると思います。それから使用is_int()します。

于 2014-05-06T09:59:24.237 に答える
3

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
?>
于 2014-05-06T10:03:47.260 に答える
0

ユーザー入力を検証するには、PHP の組み込みフィルター関数を使用する必要があります。次のハンドブックのページをご覧ください: http://www.php.net/manual/en/book.filter.php

于 2014-05-06T10:05:18.963 に答える