はじめに
PHP8の上級試験では、外部から受け取った値を検証する関数の理解が問われます。filter_input()はフォームやURLパラメータから値を取得し、オプションでフィルタリングできる関数です。本記事では、特にFILTER_VALIDATE_FLOATを使った浮動小数点数の検証方法をわかりやすく解説します。
目次
filter_input()の基本
filter_input(
int $type,
string $var_name,
int $filter = FILTER_DEFAULT,
array|int $options = 0
): mixed$type:入力元を指定INPUT_GET,INPUT_POST,INPUT_COOKIE,INPUT_SERVER,INPUT_ENV
$var_name:変数名$filter:適用するフィルタ(filter_var()と同じ定数)$options:オプション(配列またはint)
FILTER_VALIDATE_FLOATを指定すると、受け取った値が浮動小数点数かどうか検証されます
サンプルフォーム
<form action="./p233.php" method="POST">
<input name="v"><br>
<button>Submit</button>
</form>このフォームの入力値を p233.php で検証します。
<?php
declare(strict_types=1);
error_reporting(-1);
$r = filter_input(INPUT_POST, 'v', FILTER_VALIDATE_FLOAT);
var_dump($r);入力と出力の例
| 入力値 | 説明 | 出力 |
|---|---|---|
1.23 | 正しい浮動小数点数 | float(1.23) |
10a | 無効な数値 | bool(false) |
123e-3 | 科学的表記の数値 | float(0.123) |
図解イメージ
フォーム入力 → filter_input(INPUT_POST, 'v', FILTER_VALIDATE_FLOAT)
┌──────────────┐
1.23 │ float │ → float(1.23)
10a │ invalid │ → bool(false)
123e-3 │ float │ → float(0.123)filter_input()は内部的に filter_var() を呼び出しているので、挙動は同じです。
まとめ
filter_input()は外部入力値を安全に取得するための関数FILTER_VALIDATE_FLOATで浮動小数点数を検証可能- 整数文字列や科学的表記も正しく判定される
- 入力が不正な場合は
falseが返る
試験ポイント:
- POSTやGETから値を受け取る
- フィルタ定数の挙動を正確に理解する
- 科学的表記もfloatとして認識されることを覚えておく
