《PHP8上級試験対策》filter_input()でPOST値を浮動小数点数として検証する

  • URLをコピーしました!

はじめに

PHP8の上級試験では、外部から受け取った値を検証する関数の理解が問われます。filter_input()はフォームやURLパラメータから値を取得し、オプションでフィルタリングできる関数です。本記事では、特にFILTER_VALIDATE_FLOATを使った浮動小数点数の検証方法をわかりやすく解説します。

キーワード:filter_input / FILTER_VALIDATE_FLOAT / POST / 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として認識されることを覚えておく

この記事が気に入ったら
いいねしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次