除去フィルタ

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

FILTER_UNSAFE_RAW (int)

このフィルタは何もしません。

しかし、FILTER_FLAG_STRIP_* や FILTER_FLAG_ENCODE_* と一緒に使うと、特殊な文字を除去したり、エンコードしたりできます。

FILTER_DEFAULT (int)

のエイリアス FILTER_UNSAFE_RAW.

FILTER_SANITIZE_STRING (int)

このフィルタは、タグを除去したり、 ダブルクォートやシングルクォートを HTML-エンコードしたりします。

フィルタ除去フラグ FILTER_FLAG_STRIP_*, FILTER_FLAG_ENCODE_* と一緒に使うことで、特殊文字を除去したり、エンコードしたりもできます。

クォートをエンコードする際の振る舞いは、 フィルタフラグ FILTER_FLAG_NO_ENCODE_QUOTES を使うことで無効にできます。

警告

PHP 8.1.0 以降は、このフィルタは 推奨されません。 代わりに、htmlspecialchars() を使いましょう。

警告

このフィルタがタグを除去する方法は、 strip_tags() と同じではありません。

FILTER_SANITIZE_STRIPPED (int)

のエイリアス FILTER_SANITIZE_STRING.

警告

PHP 8.1.0 以降は、このフィルタは 推奨されません。 代わりに、htmlspecialchars() を使いましょう。

FILTER_SANITIZE_ENCODED (int)

このフィルタは、文字列をURLエンコードします。

このフィルタは、フィルタ除去フラグ FILTER_FLAG_STRIP_*, FILTER_FLAG_ENCODE_* と一緒に使うことで、特殊文字をエンコードしたり除去することができます。

FILTER_SANITIZE_SPECIAL_CHARS (int)

このフィルタは、 ', ", <, >, & および ASCII 値が32より小さい文字をHTMLエンコードします。 FILTER_SANITIZE_FULL_SPECIAL_CHARS と異なり、 FILTER_SANITIZE_SPECIAL_CHARS フィルタは FILTER_FLAG_NO_ENCODE_QUOTES フラグを無視します。

除去フラグ FILTER_FLAG_STRIP_* と一緒に使うことで、特殊文字を除去できます。 そして、 FILTER_FLAG_ENCODE_HIGH と一緒に使うと、ASCII 値 127より大きな値をエンコードできます。

FILTER_SANITIZE_FULL_SPECIAL_CHARS (int)

このフィルタは、 htmlspecialchars() を ENT_QUOTES と一緒にコールした場合と同じです。

クォートをエンコードする際の振る舞いは、 フィルタフラグ FILTER_FLAG_NO_ENCODE_QUOTES を使うと無効にできます。

警告

htmlspecialchars() と同様に、 このフィルタは INI 設定 default_charset を認識します。 現在の文字セットに照らして不正なバイトシーケンスが検知された場合、 文字列全体が拒否され、空の文字列が返されます。

FILTER_SANITIZE_EMAIL (int)

ラテン文字 ([a-zA-Z]), 数字 ([0-9]), そして特殊文字 !#$%&'*+-=?^_`{|}~@.[] 以外の文字を全て除去します。

FILTER_SANITIZE_URL (int)

ラテン文字 ([a-zA-Z]), 数字 ([0-9]), そして特殊文字 $-_.+!*'(),{}|\\^~[]`<>#%";/?:@&= 以外の文字を全て除去します。

FILTER_SANITIZE_NUMBER_INT (int)

数字 ([0-9]), プラス記号 (+), マイナス記号 (-) 以外の文字を全て除去します。

FILTER_SANITIZE_NUMBER_FLOAT (int)

数字 ([0-9]), プラス記号 (+), マイナス記号 (-) 以外の文字を全て除去します。

オプションのフラグ
FILTER_FLAG_ALLOW_FRACTION (int)

ドット文字 (.) を許可します。 これは通常、整数部分と小数部分の区切りを表します。

FILTER_FLAG_ALLOW_THOUSAND (int)

桁区切り文字 (,) を許可します。 これは通常、1000ごとに桁を区切るのに使われます。

FILTER_FLAG_ALLOW_SCIENTIFIC (int)

e と E 文字を許可することで、 科学的記法の数値を許可します。

警告

FILTER_FLAG_ALLOW_FRACTION フラグを使わない場合、 10進数のセパレータは削除され、変更された値を受け取ることになります。

<?php
$number = '12.34';

var_dump(filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT));
var_dump(filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
?>

上の例の出力は以下となります。

string(4) "1234"
string(5) "12.34"
FILTER_SANITIZE_ADD_SLASHES (int)

入力に対して addslashes() を適用します。 PHP 7.3.0 以降で利用可能です。

FILTER_SANITIZE_MAGIC_QUOTES (int)

のエイリアス FILTER_SANITIZE_ADD_SLASHES.

警告

PHP 7.3.0 以降は非推奨になり、 PHP 8.0.0 以降 削除 されています。