整数と浮動小数点の両方の検証をチェックしています。preg('/^[0-9]+(.[0-9]+)?$/',$str) これは正常に動作します 12,12.05 しかし、.12 では動作しません
助言がありますか?
前もってありがとう、クマール。
整数と浮動小数点の両方の検証をチェックしています。preg('/^[0-9]+(.[0-9]+)?$/',$str) これは正常に動作します 12,12.05 しかし、.12 では動作しません
助言がありますか?
前もってありがとう、クマール。
それを作る
preg('/^[0-9]*(\.[0-9]+)?$/',$str)
+
要素が 1 回以上繰り返されることを*
意味し、0 回以上繰り返されることを意味します。
ただし、どちらもis_numericでほとんどカバーされています
<?php
$tests = array(
"42",
1337,
"1e4",
"not numeric",
array(),
9.1
);
foreach ($tests as $element) {
if (is_numeric($element)) {
echo "'{$element}' is numeric", PHP_EOL;
} else {
echo "'{$element}' is NOT numeric", PHP_EOL;
}
}
?>
出力:
'42' is numeric
'1337' is numeric
'1e4' is numeric
'not numeric' is NOT numeric
'Array' is NOT numeric
'9.1' is numeric
フロートの例:
<?php
if (is_float(27.25)) {
echo "is float\n";
} else {
echo "is not float\n";
}
var_dump(is_float('abc'));
var_dump(is_float(23));
var_dump(is_float(23.5));
var_dump(is_float(1e7)); //Scientific Notation
var_dump(is_float(true));
?>
is float
bool(false)
bool(false)
bool(true)
bool(true)
bool(false)
および Is_int の例:
<?php
if (is_int(23)) {
echo "is integer\n";
} else {
echo "is not an integer\n";
}
var_dump(is_int(23));
var_dump(is_int("23"));
var_dump(is_int(23.5));
var_dump(is_int(true));
?>
is integer
bool(true)
bool(false)
bool(false)
bool(false)
はい、これを試してください:
if((int) $str != $str)
{
//error
}
if((float) $str != $str)
{
//error
}
これでうまくいくはずで、正規表現よりも速く動作すると思います。さらに、その後確認できます(float) $str <= 0
->別のエラーなど。
より複雑な検証には正規表現に賭けます。標準ルーチンでは、電子メールの検証、マスク (パターン) 入力などのコードのチャンクを作成する必要があります。
<?php
$regex = '~^(\d+)|(\d+)?\.(\d+)$~';
$input = array( '12', '12.05', '.12' );
foreach( $input as $string ) {
echo "Match " . ( preg_match( $regex, $string ) !== 0 ? "OK" : "NOT OK" ) . "\n";
}
PHP のis_floatおよびis_int関数を使用して数値を検証できます。