|
|
定義済み定数
以下の定数が定義されています。
この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、
実行時に動的にロードされている場合のみ使用可能です。
入力にまつわる定数
以下の定数は、
filter_input と
filter_input_array で使います。
-
INPUT_POST
(int)
-
POST 変数。
-
INPUT_GET
(int)
-
GET 変数。
-
INPUT_COOKIE
(int)
-
COOKIE 変数。
-
INPUT_ENV
(int)
-
ENV 変数。
-
INPUT_SERVER
(int)
-
SERVER 変数。
-
INPUT_SESSION
(int)
-
SESSION 変数。
(PHP 8.0.0 以降で削除されました。それより前のバージョンでも実装されていませんでした)
-
INPUT_REQUEST
(int)
-
REQUEST 変数。
(PHP 8.0.0 以降で削除されました。それより前のバージョンでも実装されていませんでした)
一般的なフィルタフラグ
-
FILTER_FLAG_NONE
(int)
-
フィルタしない。
-
FILTER_REQUIRE_SCALAR
(int)
-
フィルタの入力値がスカラーであることを要求するフラグ。
-
FILTER_REQUIRE_ARRAY
(int)
-
フィルタの入力値が配列であることを要求するフラグ。
-
FILTER_FORCE_ARRAY
(int)
-
配列を操作するフィルタのために、
スカラーの入力を配列でラップし、
要素を一つ持つ配列にします。
-
FILTER_NULL_ON_FAILURE
(int)
-
失敗時には、
false ではなく null を返します。
任意の検証フィルタ
FILTER_VALIDATE_*
と一緒に使うと便利です。
除去フィルタのフラグ
-
FILTER_FLAG_STRIP_LOW
(int)
-
ASCII 値が 32 未満の文字を取り除きます。
-
FILTER_FLAG_STRIP_HIGH
(int)
-
ASCII 値が 127 より大きい文字を取り除きます。
-
FILTER_FLAG_STRIP_BACKTICK
(int)
-
バッククォート文字(
`)を取り除きます。
-
FILTER_FLAG_ENCODE_LOW
(int)
-
ASCII 値が 32 未満の文字をエンコードします。
-
FILTER_FLAG_ENCODE_HIGH
(int)
-
ASCII 値が 127 より大きい文字をエンコードします。
-
FILTER_FLAG_ENCODE_AMP
(int)
-
& をエンコードします。
-
FILTER_FLAG_NO_ENCODE_QUOTES
(int)
-
' および " をエンコードしません。
-
FILTER_FLAG_EMPTY_STRING_NULL
(int)
-
除去フラグを適用した結果が空文字列だった場合、
その値を
null に変換します。
検証フィルタ
-
FILTER_VALIDATE_BOOL
(int)
-
"1",
2進数、8進数、16進数記法の 1,
1.0,
"true", true,
"on",
"yes"
に対して、true を返します。
"0",
2進数、8進数、16進数記法の 0,
0.0,
"false", false,
"off",
"no",
"" に対して、false を返します。
文字列の値は、大文字小文字の区別をせず比較されます。
このフィルタが boolean 以外を返すかどうかは、
FILTER_NULL_ON_FAILURE の値次第です。
この値が設定されていると、null を返します。
そうでない場合、false を返します。
利用可能なオプション
-
default
-
フィルタが失敗した場合に返す値
PHP 8.0.0 以降で利用可能です。
-
FILTER_VALIDATE_BOOLEAN
(int)
-
のエイリアス
FILTER_VALIDATE_BOOL。
このエイリアスは、正規化された名前が実装される前の
PHP 8.0.0 より前のバージョンで利用可能でした。
-
FILTER_VALIDATE_INT
(int)
-
値が整数値かどうかを検証します。
検証が成功すると、int 型に変換されます。
注意:
文字列の値は、検証する前に trim を実行します。
利用可能なオプション
-
default
-
フィルタが失敗した場合に返す値
-
min_range
-
指定した値と等しい、
またはそれより大きな場合にのみ値が正しいとみなされます。
-
max_range
-
指定した値と等しい、
またはそれより小さな場合にのみ値が正しいとみなされます。
オプションのフラグ
-
FILTER_FLAG_ALLOW_OCTAL
(int)
-
8 進表記 (
0[0-7]+) を許可します。
-
FILTER_FLAG_ALLOW_HEX
(int)
-
16 進表記 (
0x[0-9a-fA-F]+) を許可します。
-
FILTER_VALIDATE_FLOAT
(int)
-
値が浮動小数点数かどうかを検証します。
検証が成功すると、float 型に変換されます。
注意:
文字列の値は、検証する前に trim を実行します。
利用可能なオプション
-
default
-
フィルタが失敗した場合に返す値
-
decimal
-
-
min_range
-
指定した値と等しい、
またはそれより大きな場合にのみ値が正しいとみなされます。
PHP 7.4.0 以降で利用可能です。
-
max_range
-
指定した値と等しい、
またはそれより小さな場合にのみ値が正しいとみなされます。
PHP 7.4.0 以降で利用可能です。
オプションのフラグ
-
FILTER_FLAG_ALLOW_THOUSAND
(int)
-
桁区切り文字 (
,) を許可します。
これは通常、1000ごとに桁を区切るのに使われます。
-
FILTER_VALIDATE_REGEXP
(int)
-
regexp オプションによって、
指定した正規表現にマッチするかを検証します。
利用可能なオプション
-
default
-
フィルタが失敗した場合に返す値
-
regexp
-
PCRE 互換の正規表現
-
FILTER_VALIDATE_URL
(int)
-
URL が
» RFC 2396
に照らして正しいかを検証します。
利用可能なオプション
-
default
-
フィルタが失敗した場合に返す値
オプションのフラグ
-
FILTER_FLAG_SCHEME_REQUIRED
(int)
-
URL に scheme 部分を必須とします。
警告
PHP 7.3.0 以降は非推奨になり、
PHP 8.0.0 で削除されました。
FILTER_VALIDATE_URL
フィルタが常にこの処理を含んでいたからです。
-
FILTER_FLAG_HOST_REQUIRED
(int)
-
URL に host 部分を必須とします。
警告
PHP 7.3.0 以降は非推奨になり、
PHP 8.0.0 で削除されました。
FILTER_VALIDATE_URL
フィルタが常にこの処理を含んでいたからです。
-
FILTER_FLAG_PATH_REQUIRED
(int)
-
URL に path 部分を必須とします。
-
FILTER_FLAG_QUERY_REQUIRED
(int)
-
URL に query 部分を必須とします。
警告
正しい URL であっても、
HTTP プロトコル (http://)
を指定しない場合があります。
よって、URL
が期待通りのプロトコルを使っているかについては、
追加の検証が必要です。
たとえば ssh:// や mailto:
の検証がその例です。
警告
このフィルタは
ASCII で構成された
URL に対してのみ動作します。
つまり、Internationalized Domain Names (IDN)
は常に拒否されるということです。
-
FILTER_VALIDATE_DOMAIN
(int)
-
ドメイン名が
» RFC 952,
» RFC 1034,
» RFC 1035,
» RFC 1123,
» RFC 2732,
» RFC 2181
に照らして正しいかを検証します。
利用可能なオプション
-
default
-
フィルタが失敗した場合に返す値
オプションのフラグ
-
FILTER_FLAG_HOSTNAME
(int)
-
アルファベットと数字から始まり、
アルファベットと数字およびハイフンだけを含むホスト名を必須とします。
-
FILTER_VALIDATE_EMAIL
(int)
-
値が "正しい" メールアドレスかどうかを検証します。
» RFC 822
の
addr-spec syntax に照らして検証は行われます。
しかし、コメントやホワイトスペースのフォールディング、
ドットなしのドメイン名はサポートされていません。
よってこれらは拒否されます。
利用可能なオプション
-
default
-
フィルタが失敗した場合に返す値
オプションのフラグ
-
FILTER_FLAG_EMAIL_UNICODE
(int)
-
local の部分に Unicode を許可します。
PHP 7.1.0 以降で利用可能です。
警告
メールアドレスの検証は複雑なので、
メールアドレスが正しく、かつ存在するかを確認する唯一の方法は、
そのアドレスにメールを送信することです。
-
FILTER_VALIDATE_IP
(int)
-
値が IPアドレス かどうかを検証します。
利用可能なオプション
-
default
-
フィルタが失敗した場合に返す値
オプションのフラグ
-
FILTER_FLAG_IPV4
(int)
-
IPv4 アドレスを許可します。
-
FILTER_FLAG_IPV6
(int)
-
IPv6 アドレスを許可します。
-
FILTER_FLAG_NO_RES_RANGE
(int)
-
予約済みアドレスを拒否します。
» RFC 6890
で
Reserved-By-Protocol
としてマークされているアドレスが該当します。
IPv4 については、以下の範囲が該当します:
0.0.0.0/8
169.254.0.0/16
127.0.0.0/8
240.0.0.0/4
IPv6 については、以下の範囲が該当します:
::1/128
::/128
::FFFF:0:0/96
FE80::/10
-
FILTER_FLAG_NO_PRIV_RANGE
(int)
-
プライベートアドレスを拒否します。
IPv4 については、以下の範囲が該当します:
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
.
IPv6 については、
FD や FC
から始まるものが該当します。
-
FILTER_FLAG_GLOBAL_RANGE
(int)
-
グローバルアドレスのみを許可します。
» RFC 6890 で、
Global 属性が True
になっているものが該当します。
PHP 8.2.0 以降で利用可能です。
-
FILTER_VALIDATE_MAC
(int)
-
値が MACアドレス かどうかを検証します。
利用可能なオプション
-
default
-
フィルタが失敗した場合に返す値
除去フィルタ
-
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)
-
以下のHTMLエンコードおよび、ASCII 値が32より小さい値をフィルタします。
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進数のセパレータは削除され、変更された値を受け取ることになります。
-
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 以降 削除 されています。
ユーザー定義のフィルタ
-
FILTER_CALLBACK
(int)
-
このフィルタは、フィルタリング処理をユーザー定義の関数に委譲します。
options パラメータの 'options'
キー経由で callable を渡します。
コールバックは、以下のシグネチャを持ちます:
mixed callback(string $value)
-
value
-
フィルタされる値
注意:
コールバックから返される値が、
フィルタ関数の呼び出しで返される値になります。
例1
ログイン名を検証するために
FILTER_CALLBACK
を使う例
<?php
function validate_login(string $value): ?string
{
if (strlen($value) >= 5 && ctype_alnum($value)) {
return $value;
}
return null;
}
$login = "val1dL0gin";
$filtered_login = filter_var($login, FILTER_CALLBACK, ['options' => 'validate_login']);
var_dump($filtered_login);
$login = "f&ke login";
$filtered_login = filter_var($login, FILTER_CALLBACK, ['options' => 'validate_login']);
var_dump($filtered_login);
?>
string(10) "val1dL0gin"
NULL
警告
このフィルタは、
FILTER_NULL_ON_FAILURE
のような他のフィルタフラグと一緒には使えません。
|