数値の検証に役立つ PHP 関数を探しています。私が見つけたのはis_numeric()
PHPis_float()
です。
これは、数値と浮動小数点数に対して機能しますが、負の数は検証しません。
12345
検証し
たい
数字
12345.6789
は
0
、、、、、
-12345.6789
-12345
数値の検証に役立つ PHP 関数を探しています。私が見つけたのはis_numeric()
PHPis_float()
です。
これは、数値と浮動小数点数に対して機能しますが、負の数は検証しません。
12345
検証し
たい
数字
12345.6789
は
0
、、、、、
-12345.6789
-12345
is_numeric
あなたが与えるすべての入力に対してうまくいきます(そして、しかしなどの入力も受け入れ1e10
ます0xff
)。
filter_var
おそらく、代わりに使用する方がはるかに優れていることがわかります。
$value = filter_var($input, FILTER_VALIDATE_FLOAT);
if ($value !== false) {
// was a valid float, do something with it
}
これはまだ受け入れます1e10
が、受け入れません0xff
。
使用できますis_numeric
$list = array("1e4",12345,12345.6789,0,- 12345.6789,- 12345,'0xa');
foreach ( $list as $value ) {
var_dump(is_numeric($value));
}
出力
boolean true
boolean true
boolean true
boolean true
boolean true
boolean true
boolean true
^-- This should not be true
* ノート *
is_numeric
filter_var
Jonが推奨するように、代わりに 使用する必要があります。
foreach ( $list as $value ) {
var_dump(is_float(filter_var($value, FILTER_VALIDATE_FLOAT)));
}
出力
boolean true
boolean true
boolean true
boolean true
boolean true
boolean true
boolean false
^-- can you see its false