入力が数値かどうかを確認する最良の方法は何ですか?
これらの種類の数字は有効ではありません。 123、012(12)などの数字のみ、正の数字が有効です。これは現在のコードです:
$num = (int) $val;
if (
preg_match('/^\d+$/', $num)
&&
strval(intval($num)) == strval($num)
)
{
return true;
}
else
{
return false;
}
ctype_digit
は、この目的のために正確に構築されました。
私が使う
if(is_numeric($value) && $value > 0 && $value == round($value, 0)){
値が数値、正の整数であるかどうかを検証する
Ctype_digitは "is_numeric"ほど読みにくく、値が数値であることを本当に検証したい場合には実際には欠陥が少ないため、ctype_digitはあまり好きではありません。
$options = array(
'options' => array('min_range' => 0)
);
if (filter_var($int, FILTER_VALIDATE_INT, $options) !== FALSE) {
// you're good
}
return ctype_digit($num) && (int) $num > 0
PHPバージョン4以降のバージョンの場合:
<?PHP
$input = 4;
if(is_numeric($input)){ // return **TRUE** if it is numeric
echo "The input is numeric";
}else{
echo "The input is not numeric";
}
?>
最も安全な方法
if(preg_replace('/[0-9\.\-]/', '', $value) == ""){
//if all made of numbers "-" or ".", then yes is number;
}