noshi’s diary

ゲームの事、映画やドラマ、思いついた事、プログラミングの事、雑記的なことを書いています

PHP 数値かどうかをチェックする

見積もりフォームなどで、ユーザーから受け取った値を計算するときなど、その入力データが数値かどうかをチェックする場合があります。 そのようなとき、よく使われるのがis_numeric()関数。 この関数では、データが数値または数値文字列であれば、TRUEを返します。 また、同様の働きをするctype_digit()関数もある。 こちらは入力値が数値か調べるときにつかうこともありますが、入力値に含まれるすべての文字が数値かどうかをチェックします。 「12.45」のように小数点が含まれる数値では、ctype_digit()関数はFALSEが返します。 例を見てみますと、

<?php
//データを受け取る
$ndata1 = @$_POST["ndata1"];
//データの型を表示する
echo "<p>$ndata1 のデータ型:".gettype($ndata1);
//数値かどうかをチェックする
if(is_numeric($ndata1)){
$ndata2 = $ndata1 * $ndata1;
echo "<p>$ndata1 * $ndata1 = ". $ndata2;
}
else {
echo "<p>数値を入力してください:".$ndata1;
}
//数値かどうかをチェックする
if(ctype_digit($ndata1)){
$ndata2 = $ndata1 * $ndata1;
echo "<p>$ndata1 * $ndata1 = ". $ndata2;
}
else {
echo "<p>数値を入力してください:".$ndata1;
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>" />
<table>
<tr>
<td><input type="text" name="ndata1" /></td>
<td><input type="submit" value="送信" name="nds" /></td>
</tr>
</table>

数値が整数の場合の結果 chknum01.gif 数値が小数点の数値の場合の結果 chknum02.gif