言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

PHP辞典

  1. トップページ
  2. PHP辞典
  3. filter_var() / filter_input()

filter_var() / filter_input() 対応: PHP 5(2004)

入力値のバリデーションやサニタイズを行う関数です。外部から受け取ったデータの安全性を確保するために使用します。

構文

// 変数にフィルターを適用します。
filter_var($value, $filter, $options);

// $_GET, $_POST, $_COOKIE 等から値を取得してフィルターを適用します。
filter_input($type, $var_name, $filter, $options);

関数一覧

関数概要
filter_var($value, $filter, $options)変数にフィルターを適用し、バリデーションやサニタイズを行います。バリデーション失敗時は『false』を返します。
filter_input($type, $var_name, $filter, $options)外部入力をフィルター付きで取得します。第1引数には『INPUT_GET』『INPUT_POST』『INPUT_COOKIE』などを指定します。

主なバリデーションフィルター

フィルター概要
FILTER_VALIDATE_EMAILメールアドレスの形式を検証します。
FILTER_VALIDATE_URLURLの形式を検証します。
FILTER_VALIDATE_IPIPアドレスの形式を検証します。『FILTER_FLAG_IPV4』『FILTER_FLAG_IPV6』でバージョンを限定できます。
FILTER_VALIDATE_INT整数値を検証します。オプションで最小値・最大値の範囲を指定できます。
FILTER_VALIDATE_FLOAT浮動小数点数を検証します。
FILTER_VALIDATE_BOOLEAN真偽値を検証します。『true』『yes』『on』『1』を『true』として認識します。※ 文字列 'false' を渡すと true ではなく null が返ります。直感に反する挙動なので注意してください。
FILTER_VALIDATE_DOMAINドメイン名の形式を検証します。PHP 7.0 以降で利用可能です。

主なサニタイズフィルター

フィルター概要
FILTER_SANITIZE_EMAILメールアドレスとして不正な文字を除去します。
FILTER_SANITIZE_URLURLとして不正な文字を除去します。
FILTER_SANITIZE_NUMBER_INT数字、プラス記号、マイナス記号以外の文字を除去します。
FILTER_SANITIZE_NUMBER_FLOAT数字、プラス記号、マイナス記号、ピリオド以外の文字を除去します。
FILTER_SANITIZE_SPECIAL_CHARSHTMLの特殊文字をエンコードします。
FILTER_SANITIZE_ADD_SLASHES『addslashes()』と同等の処理を行います。PHP 8.1 で『FILTER_SANITIZE_STRING』の代替として追加されました。

サンプルコード

<?php
// メールアドレスのバリデーションです。
$email = "user@example.com";
if (filter_var($email, FILTER_VALIDATE_EMAIL) !== false) {
	echo "有効なメールアドレスです。"; // 検証に通ります。
}

// 不正なメールアドレスの場合は false が返されます。
var_dump(filter_var("not-an-email", FILTER_VALIDATE_EMAIL)); // 『bool(false)』と出力されます。

// URLのバリデーションです。
$url = "https://wp-p.info";
if (filter_var($url, FILTER_VALIDATE_URL) !== false) {
	echo "有効なURLです。";
}

// 整数値のバリデーションで範囲を指定します。
$age = "25";
$options = ['options' => ['min_range' => 0, 'max_range' => 150]];
$valid_age = filter_var($age, FILTER_VALIDATE_INT, $options);
if ($valid_age !== false) {
	echo "年齢: " . $valid_age; // 『年齢: 25』と出力されます。
}

// IPアドレスのバリデーションです。
var_dump(filter_var("192.168.1.1", FILTER_VALIDATE_IP)); // 『string(11) "192.168.1.1"』と出力されます。
var_dump(filter_var("999.999.999.999", FILTER_VALIDATE_IP)); // 『bool(false)』と出力されます。

// filter_input() で $_GET の値を安全に取得します。
$page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, [
	'options' => ['min_range' => 1, 'default' => 1]
]);

// サニタイズの例です。
$dirty_email = "user
このエントリーをはてなブックマークに追加