filter_var

関数の概要

PHPの filter_var 関数は、変数の値を検証(バリデーション)やサニタイズ(無害化)するために使われます。ユーザーからの入力データを安全に処理する際によく利用され、データの信頼性を高め、脆弱性を防ぐのに役立ちます。

パラメータの説明

  • mixed $variable — 検証またはサニタイズしたい対象の値
  • int $filter — 適用するフィルター定数(例: FILTER_VALIDATE_EMAILFILTER_SANITIZE_STRING など)
  • array|int $options(省略可) — 追加オプションやフラグを指定できます。配列で詳細設定も可能

戻り値

指定したフィルターに応じて返す値は異なります。たとえば、検証フィルターを使った場合は検証に成功すればフィルター処理後の値を返し、失敗すれば false を返します。サニタイズフィルターの場合は、サニタイズ後の文字列を返します。

使用例

1. メールアドレスの検証

<?php
$email = "example@example.com";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "有効なメールアドレスです。";
} else {
    echo "無効なメールアドレスです。";
}
?>

メールアドレスとして正しい形式かどうかを検証します。無効なら false が返るため、条件文で判別可能です。

2. URLの検証

<?php
$url = "https://www.example.com";
if (filter_var($url, FILTER_VALIDATE_URL)) {
    echo "有効なURLです。";
} else {
    echo "無効なURLです。";
}
?>

ウェブサイトのURLが正しいか確認できます。ユーザー入力のURLの安全性チェックに使えます。

3. 文字列のサニタイズ(HTMLタグの除去)

<?php
$comment = "<b>こんにちは</b>、元気ですか?";
$safe_comment = filter_var($comment, FILTER_SANITIZE_STRING);
echo $safe_comment;
?>

ユーザーが投稿したコメントなどからHTMLタグを取り除き、XSS攻撃のリスクを減らします。

4. 数値の検証

<?php
$age = "25";
if (filter_var($age, FILTER_VALIDATE_INT)) {
    echo "有効な整数値です。";
} else {
    echo "整数値ではありません。";
}
?>

整数として正しいかどうかをチェック。フォーム入力の数値チェックにも便利です。

関連する関数

  • filter_input — 外部入力(GET, POSTなど)から指定変数をフィルターする
  • filter_var_array — 複数の変数に対して同時にフィルターを適用する
  • filter_list — 利用可能なフィルターの一覧を取得する

まとめ

filter_var はPHPでデータの検証やサニタイズを手軽に行える強力な関数です。ユーザーからの入力をそのまま使うのではなく、必ず検証や無害化を挟むことで、安全なWebアプリケーションを構築できます。メール、URL、整数値の検証や文字列のサニタイズなど、さまざまな用途に活用しましょう。