除去フィルタ

除去フィルタの一覧
ID 名前 フラグ 説明
FILTER_SANITIZE_EMAIL "email"   英字、数字および !#$%&'*+-=?^_`{|}~@.[] 以外のすべての文字を取り除きます。
FILTER_SANITIZE_ENCODED "encoded" FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_STRIP_BACKTICK, FILTER_FLAG_ENCODE_LOW, FILTER_FLAG_ENCODE_HIGH 文字列を URL エンコードします。オプションで、 特殊文字を取り除いたりエンコードしたりします。
FILTER_SANITIZE_MAGIC_QUOTES "magic_quotes"   addslashes() を適用します。 (PHP 7.3.0 以降は非推奨になり、 PHP 8.0.0 以降 削除 されています。 代わりに FILTER_SANITIZE_ADD_SLASHES を使ってください)
FILTER_SANITIZE_ADD_SLASHES "add_slashes"   addslashes() を適用します。 (PHP 7.3.0 以降で利用可能です)
FILTER_SANITIZE_NUMBER_FLOAT "number_float" FILTER_FLAG_ALLOW_FRACTION, FILTER_FLAG_ALLOW_THOUSAND, FILTER_FLAG_ALLOW_SCIENTIFIC 数字、+- および オプションで .,eE 以外のすべての文字を取り除きます。
FILTER_SANITIZE_NUMBER_INT "number_int"   数字、プラス記号、マイナス記号 以外のすべての文字を取り除きます。
FILTER_SANITIZE_SPECIAL_CHARS "special_chars" FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_STRIP_BACKTICK, FILTER_FLAG_ENCODE_HIGH '"<>& および ASCII 値が 32 未満の文字を HTML エンコードします。オプションで、 その他の特殊文字を取り除いたりエンコードしたりします。
FILTER_SANITIZE_FULL_SPECIAL_CHARS "full_special_chars" FILTER_FLAG_NO_ENCODE_QUOTES, htmlspecialchars()ENT_QUOTES を指定してコールするのと同じです。 クォートのエンコードを無効にするには FILTER_FLAG_NO_ENCODE_QUOTES を設定します。 htmlspecialchars() と同様、このフィルタは default_charset に対応しています。 現在の文字セットで無効な文字となるバイトシーケンスが検出されると文字列全体を拒否し、 結果は長さ 0 の文字列となります。 このフィルタをデフォルトのフィルタとして使う場合は、以下の警告を参考にして デフォルトのフラグを 0 に設定しましょう。
FILTER_SANITIZE_STRING "string" FILTER_FLAG_NO_ENCODE_QUOTES, FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_STRIP_BACKTICK, FILTER_FLAG_ENCODE_LOW, FILTER_FLAG_ENCODE_HIGH, FILTER_FLAG_ENCODE_AMP タグと、エンコードされたシングルクォート、 ダブルクォートを取り除きます。 オプションで、 特殊文字を取り除いたりエンコードしたりします。 クォートをエンコードする動作は、 FILTER_FLAG_NO_ENCODE_QUOTES を設定することで無効に出来ます。 (PHP 8.1.0 以降は 非推奨 になりました。 代わりに htmlspecialchars() を使って下さい)
FILTER_SANITIZE_STRIPPED "stripped"   "string" フィルタのエイリアス。 (PHP 8.1.0 以降は 非推奨 になりました。 代わりに htmlspecialchars() を使って下さい)
FILTER_SANITIZE_URL "url"   英字、数字および $-_.+!*'(),{}|\\^~[]`<>#%";/?:@&= 以外のすべての文字を取り除きます。
FILTER_UNSAFE_RAW "unsafe_raw" FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_STRIP_BACKTICK, FILTER_FLAG_ENCODE_LOW, FILTER_FLAG_ENCODE_HIGH, FILTER_FLAG_ENCODE_AMP 何もせず、オプションで特殊文字を取り除いたりエンコードしたりします。 FILTER_DEFAULT は、このフィルタのエイリアスです。

警告

これらのフィルタのいずれかを ini ファイルやウェブサーバーの設定でデフォルトフィルタとして使用すると、 デフォルトのフラグは FILTER_FLAG_NO_ENCODE_QUOTES となります。 デフォルトでクォートをエンコードさせるには、 明示的に filter.default_flags を 0 としなければなりません。

例1 デフォルトのフィルタを htmlspecialchars と同様の挙動にする設定

filter.default = full_special_chars
filter.default_flags = 0

変更履歴

バージョン 説明
8.0.0 FILTER_SANITIZE_MAGIC_QUOTES が削除されました。
7.3.0 FILTER_SANITIZE_MAGIC_QUOTES の代替として FILTER_SANITIZE_ADD_SLASHES が追加されました。
7.3.0 FILTER_SANITIZE_MAGIC_QUOTES は推奨されなくなりました。

関連キーワード:  フィルタ, 除去, 文字, htmlspecialchars, 設定, 推奨, 数字, クォート, フラグ, string