この拡張モジュールは、 ユーザ入力などのセキュアでないデータの検証およびフィルタリングを行います。
現在存在するのは、以下のフィルタです。各定数の振る舞いについての説明は フィルタ定数 の節を参照ください。
表 1. 存在するフィルタ
ID | 名前 | オプション | フラグ | 説明 |
---|---|---|---|---|
FILTER_VALIDATE_INT | "int" |
min_range ,
max_range
| FILTER_FLAG_ALLOW_OCTAL, FILTER_FLAG_ALLOW_HEX | 値が整数であるかどうか、オプションで指定した範囲内にあるかどうかを検証します。 |
FILTER_VALIDATE_BOOLEAN | "boolean" | "1"、"true"、"on" および "yes" の場合に TRUE、 "0"、"false"、"off"、"no" および "" の場合に FALSE、 そしてそれ以外の場合に NULL を返します。 | ||
FILTER_VALIDATE_FLOAT | "float" | 値が float であるかどうかを検証します。 | ||
FILTER_VALIDATE_REGEXP | "validate_regexp" |
regexp
|
値が、Perl 互換の
正規表現 regexp に一致するかどうかを検証します。
| |
FILTER_VALIDATE_URL | "validate_url" | FILTER_FLAG_SCHEME_REQUIRED, FILTER_FLAG_HOST_REQUIRED, FILTER_FLAG_PATH_REQUIRED, FILTER_FLAG_QUERY_REQUIRED | 値が URL 形式であるかどうか、 オプションで指定したコンポーネントが含まれているかどうかを検証します。 | |
FILTER_VALIDATE_EMAIL | "validate_email" | 値が e-mail 形式であるかどうかを検証します。 | ||
FILTER_VALIDATE_IP | "validate_ip" | FILTER_FLAG_IPV4, FILTER_FLAG_IPV6, FILTER_FLAG_NO_PRIV_RANGE, FILTER_FLAG_NO_RES_RANGE | 値が IP アドレスであるかどうかを検証します。 オプションで IPv4 あるいは IPv6 のみの指定、 プライベートアドレスや予約済みアドレスではないことの指定もできます。 | |
FILTER_SANITIZE_STRING | "string" | FILTER_FLAG_NO_ENCODE_QUOTES, FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_ENCODE_LOW, FILTER_FLAG_ENCODE_HIGH, FILTER_FLAG_ENCODE_AMP | タグを取り除きます。オプションで、 特殊文字を取り除いたりエンコードしたりします。 | |
FILTER_SANITIZE_STRIPPED | "stripped" | "string" フィルタのエイリアス。 | ||
FILTER_SANITIZE_ENCODED | "encoded" | FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_ENCODE_LOW, FILTER_FLAG_ENCODE_HIGH | 文字列を URL エンコードします。オプションで、 特殊文字を取り除いたりエンコードしたりします。 | |
FILTER_SANITIZE_SPECIAL_CHARS | "special_chars" | FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_ENCODE_HIGH | '"<>& および ASCII 値が 32 未満の文字を HTML エスケープします。オプションで、 特殊文字を取り除いたりエンコードしたりします。 | |
FILTER_UNSAFE_RAW | "unsafe_raw" | FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_ENCODE_LOW, FILTER_FLAG_ENCODE_HIGH, FILTER_FLAG_ENCODE_AMP | 何もせず、オプションで特殊文字を取り除いたりエンコードしたりします。 | |
FILTER_SANITIZE_EMAIL | "email" | 英字、数字および !#$%&'*+-/=?^_`{|}~@.[] 以外のすべての文字を取り除きます。 | ||
FILTER_SANITIZE_URL | "url" | 英字、数字および $-_.+!*'(),{}|\\^~[]`<>#%";/?:@&= 以外のすべての文字を取り除きます。 | ||
FILTER_SANITIZE_NUMBER_INT | "number_int" | 数字および +- 以外のすべての文字を取り除きます。 | ||
FILTER_SANITIZE_NUMBER_FLOAT | "number_float" | FILTER_FLAG_ALLOW_FRACTION, FILTER_FLAG_ALLOW_THOUSAND, FILTER_FLAG_ALLOW_SCIENTIFIC | 数字、+- および オプションで .,eE 以外のすべての文字を取り除きます。 | |
FILTER_SANITIZE_MAGIC_QUOTES | "magic_quotes" | addslashes() を適用します。 | ||
FILTER_CALLBACK | "callback" | callback 関数あるいはメソッド | ユーザ定義の関数をコールしてデータをフィルタリングします。 |
外部ライブラリを必要としません。
php.ini の設定により動作が変化します。
表 2. フィルタ設定オプション
名前 | デフォルト | 変更の可否 | 変更履歴 |
---|---|---|---|
filter.default | unsafe_raw | PHP_INI_PERDIR | |
filter.default_flags | PHP_INI_PERDIR |
以下に設定ディレクティブに関する 簡単な説明を示します。
filter.default
stringこのフィルタで $_GET, $_POST, $_COOKIE および $_REQUEST のすべてのデータをフィルタリングします。 もとのデータへは filter_input() でアクセスが可能です。
デフォルトで使用するフィルタの名前を指定することができます。 既存のフィルタの一覧を参照し、フィルタ名を指定してください。
filter.default_flags
integerデフォルトのフラグ。
リソース型は定義されていません。
以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
POST 変数。
GET 変数。
COOKIE 変数。
ENV 変数。
SERVER 変数。
SESSION 変数 (まだ実装されていません)。
REQUEST 変数 (まだ実装されていません)。
フィルタしない。
入力値としてスカラーを要求するために使用するフラグ。
入力として配列を要求します。
常に配列として返します。
失敗した場合に FALSE ではなく NULL を使用します。
"int" フィルタの ID。
"boolean" フィルタの ID。
"float" フィルタの ID。
"validate_regexp" フィルタの ID。
"validate_url" フィルタの ID。
"validate_email" フィルタの ID。
"validate_ip" フィルタの ID。
デフォルト ("string") フィルタの ID。
"unsafe_raw" フィルタの ID。
"string" フィルタの ID。
"stripped" フィルタの ID。
"encoded" フィルタの ID。
"special_chars" フィルタの ID。
"email" フィルタの ID。
"url" フィルタの ID。
"number_int" フィルタの ID。
"number_float" フィルタの ID。
"magic_quotes" フィルタの ID。
"callback" フィルタの ID。
"int" フィルタで 8 進表記 (0[0-7]+) を許可します。
"int" フィルタで 16 進表記 (0x[0-9a-fA-F]+) を許可します。
ASCII 値が 32 未満の文字を取り除きます。
ASCII 値が 127 より大きい文字を取り除きます。
ASCII 値が 32 未満の文字をエンコードします。
ASCII 値が 127 より大きい文字をエンコードします。
& をエンコードします。
' および " をエンコードしません。
(現在は使用されていません)
"number_float" フィルタで小数を許可します。
"number_float" フィルタで桁区切り文字 (,) を許可します。
"number_float" フィルタで科学記法 (e, E) を許可します。
"validate_url" フィルタでスキームを必須とします。
"validate_url" フィルタでホスト名を必須とします。
"validate_url" フィルタでパスを必須とします。
"validate_url" フィルタでクエリ文字列を必須とします。
"validate_ip" フィルタで IPv4 アドレスのみを許可します。
"validate_ip" フィルタで IPv6 アドレスのみを許可します。
"validate_ip" フィルタで予約済みアドレスを拒否します。
"validate_ip" フィルタでプライベートアドレスを拒否します。