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

# 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 関数あるいはメソッド | ユーザ定義の関数をコールしてデータをフィルタリングします。

# 要件

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

# インストール手順

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

    $ pecl install filter

とタイプします。

# 実行時設定

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

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

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

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

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

`filter.default` string

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

  デフォルトで使用するフィルタの名前を指定することができます。 既存のフィルタの一覧を参照し、フィルタ名を指定してください。

`filter.default_flags` integer

  デフォルトのフラグ。

# リソース型

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

# 定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが 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" フィルタでプライベートアドレスを拒否します。

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