関数の概要
PHPの filter_var 関数は、変数の値を検証(バリデーション)やサニタイズ(無害化)するために使われます。ユーザーからの入力データを安全に処理する際によく利用され、データの信頼性を高め、脆弱性を防ぐのに役立ちます。
パラメータの説明
- mixed $variable — 検証またはサニタイズしたい対象の値
- int $filter — 適用するフィルター定数(例:
FILTER_VALIDATE_EMAIL、FILTER_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、整数値の検証や文字列のサニタイズなど、さまざまな用途に活用しましょう。
