XLI. フィルタ関数
導入
この拡張モジュールは、 ユーザ入力などのセキュアでないデータの検証およびフィルタリングを行います。
現在存在するのは、以下のフィルタです。各定数の振る舞いについての説明は フィルタ定数 の節を参照ください。
表 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.defaultstring -
このフィルタで $_GET, $_POST, $_COOKIE および $_REQUEST のすべてのデータをフィルタリングします。 もとのデータへは filter_input() でアクセスが可能です。
デフォルトで使用するフィルタの名前を指定することができます。 既存のフィルタの一覧を参照し、フィルタ名を指定してください。
-
filter.default_flagsinteger -
デフォルトのフラグ。
リソース型
リソース型は定義されていません。
定義済み定数
以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
- INPUT_POST ( integer )
-
POST 変数。
- INPUT_GET ( integer )
-
GET 変数。
- INPUT_COOKIE ( integer )
-
COOKIE 変数。
- INPUT_ENV ( integer )
-
ENV 変数。
- INPUT_SERVER ( integer )
-
SERVER 変数。
- INPUT_SESSION ( integer )
-
SESSION 変数 (まだ実装されていません)。
- INPUT_REQUEST ( integer )
-
REQUEST 変数 (まだ実装されていません)。
- FILTER_FLAG_NONE ( integer )
-
フィルタしない。
- FILTER_REQUIRE_SCALAR ( integer )
-
入力値としてスカラーを要求するために使用するフラグ。
- FILTER_REQUIRE_ARRAY ( integer )
-
入力として配列を要求します。
- FILTER_FORCE_ARRAY ( integer )
-
常に配列として返します。
- FILTER_NULL_ON_FAILURE ( integer )
-
失敗した場合に FALSE ではなく NULL を使用します。
- FILTER_VALIDATE_INT ( integer )
-
"int" フィルタの ID。
- FILTER_VALIDATE_BOOLEAN ( integer )
-
"boolean" フィルタの ID。
- FILTER_VALIDATE_FLOAT ( integer )
-
"float" フィルタの ID。
- FILTER_VALIDATE_REGEXP ( integer )
-
"validate_regexp" フィルタの ID。
- FILTER_VALIDATE_URL ( integer )
-
"validate_url" フィルタの ID。
- FILTER_VALIDATE_EMAIL ( integer )
-
"validate_email" フィルタの ID。
- FILTER_VALIDATE_IP ( integer )
-
"validate_ip" フィルタの ID。
- FILTER_DEFAULT ( integer )
-
デフォルト ("string") フィルタの ID。
- FILTER_UNSAFE_RAW ( integer )
-
"unsafe_raw" フィルタの ID。
- FILTER_SANITIZE_STRING ( integer )
-
"string" フィルタの ID。
- FILTER_SANITIZE_STRIPPED ( integer )
-
"stripped" フィルタの ID。
- FILTER_SANITIZE_ENCODED ( integer )
-
"encoded" フィルタの ID。
- FILTER_SANITIZE_SPECIAL_CHARS ( integer )
-
"special_chars" フィルタの ID。
- FILTER_SANITIZE_EMAIL ( integer )
-
"email" フィルタの ID。
- FILTER_SANITIZE_URL ( integer )
-
"url" フィルタの ID。
- FILTER_SANITIZE_NUMBER_INT ( integer )
-
"number_int" フィルタの ID。
- FILTER_SANITIZE_NUMBER_FLOAT ( integer )
-
"number_float" フィルタの ID。
- FILTER_SANITIZE_MAGIC_QUOTES ( integer )
-
"magic_quotes" フィルタの ID。
- FILTER_CALLBACK ( integer )
-
"callback" フィルタの ID。
- FILTER_FLAG_ALLOW_OCTAL ( integer )
-
"int" フィルタで 8 進表記 ( 0[0-7]+ ) を許可します。
- FILTER_FLAG_ALLOW_HEX ( integer )
-
"int" フィルタで 16 進表記 ( 0x[0-9a-fA-F]+ ) を許可します。
- FILTER_FLAG_STRIP_LOW ( integer )
-
ASCII 値が 32 未満の文字を取り除きます。
- FILTER_FLAG_STRIP_HIGH ( integer )
-
ASCII 値が 127 より大きい文字を取り除きます。
- FILTER_FLAG_ENCODE_LOW ( integer )
-
ASCII 値が 32 未満の文字をエンコードします。
- FILTER_FLAG_ENCODE_HIGH ( integer )
-
ASCII 値が 127 より大きい文字をエンコードします。
- FILTER_FLAG_ENCODE_AMP ( integer )
-
& をエンコードします。
- FILTER_FLAG_NO_ENCODE_QUOTES ( integer )
-
' および " をエンコードしません。
- FILTER_FLAG_EMPTY_STRING_NULL ( integer )
-
(現在は使用されていません)
- FILTER_FLAG_ALLOW_FRACTION ( integer )
-
"number_float" フィルタで小数を許可します。
- FILTER_FLAG_ALLOW_THOUSAND ( integer )
-
"number_float" フィルタで桁区切り文字 ( , ) を許可します。
- FILTER_FLAG_ALLOW_SCIENTIFIC ( integer )
-
"number_float" フィルタで科学記法 ( e , E ) を許可します。
- FILTER_FLAG_SCHEME_REQUIRED ( integer )
-
"validate_url" フィルタでスキームを必須とします。
- FILTER_FLAG_HOST_REQUIRED ( integer )
-
"validate_url" フィルタでホスト名を必須とします。
- FILTER_FLAG_PATH_REQUIRED ( integer )
-
"validate_url" フィルタでパスを必須とします。
- FILTER_FLAG_QUERY_REQUIRED ( integer )
-
"validate_url" フィルタでクエリ文字列を必須とします。
- FILTER_FLAG_IPV4 ( integer )
-
"validate_ip" フィルタで IPv4 アドレスのみを許可します。
- FILTER_FLAG_IPV6 ( integer )
-
"validate_ip" フィルタで IPv6 アドレスのみを許可します。
- FILTER_FLAG_NO_RES_RANGE ( integer )
-
"validate_ip" フィルタで予約済みアドレスを拒否します。
- FILTER_FLAG_NO_PRIV_RANGE ( integer )
-
"validate_ip" フィルタでプライベートアドレスを拒否します。
- 目次
- filter_has_var -- 指定した型の変数が存在するかどうかを調べる
- filter_id -- フィルタの名前からフィルタ ID を返す
- filter_input_array -- PHP の外部から複数の変数を受け取り、オプションでそれらをフィルタリングする
- filter_input -- PHP の外部から変数を受け取り、オプションでそれをフィルタリングする
- filter_list -- サポートされるフィルタの一覧を返す
- filter_var_array -- 複数の変数を受け取り、オプションでそれらをフィルタリングする
- filter_var -- 指定したフィルタでデータをフィルタリングする