PHP マニュアル
前のページ |  | 次のページ

# XL. フィルタ関数

# 導入

この拡張モジュールは、 ユーザ入力などのセキュアでないデータの検証およびフィルタリングを行います。

警告
この拡張モジュールは、 実験的 なものです。この拡張モジュールの動作・ 関数名・その他ドキュメントに書かれている事項は、予告なく、将来的な PHP のリリースにおいて変更される可能性があります。 このモジュールは自己責任で使用してください。

現在は、以下のフィルタが存在します。

表 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 |  | 値が正規表現に一致するかどうかを検証します。
`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 関数あるいはメソッド | ユーザ定義の関数をコールしてデータをフィルタリングします。

# 要件

外部ライブラリを必要としません。

# インストール手順

簡単なインストールメモ。コンソールで、ただ単に

    $ pear install filter

とタイプします。

# 実行時設定

`php.ini` の設定により動作が変化します。

表 2. フィルタ設定オプション

名前 | デフォルト | 変更の可否 | 変更履歴
--- | --- | --- | ---
filter.default | string | PHP_INI_SYSTEM |
filter.default_flags |  | PHP_INI_SYSTEM |

PHP_INI_* 定数の詳細および定義については 付録G を参照してください。

以下に設定ディレクティブに関する 簡単な説明を示します。

filter.default string

  このフィルタで $_GET, $_POST, $_COOKIE および $_REQUEST のすべてのデータをフィルタリングします。 もとのデータへは input_get() でアクセスが可能です。

filter.default_flags integer

  filter_data() のデフォルトのフラグ。

# リソース型

リソース型は定義されていません。

# 定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが 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 変数。

`FILTER_FLAG_NONE` (integer)

  フィルタしない。

`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" フィルタでプライベートアドレスを拒否します。

前のページ | ホーム | 次のページ
unlink | 上に戻る | filter_data