Note: FILTER_NULL_ON_FAILURE, FILTER_REQUIRE_SCALAR, FILTER_REQUIRE_ARRAY and FILTER_FORCE_ARRAY dont have prefix "FILTER_FLAG_" but they are FLAGS!
以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
以下の定数は、 filter_input() と filter_input_array() で使います。
INPUT_POST
(int)
INPUT_GET
(int)
INPUT_ENV
(int)
INPUT_SERVER
(int)
INPUT_SESSION
(int)
INPUT_REQUEST
(int)
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)
FILTER_FLAG_STRIP_HIGH
(int)
FILTER_FLAG_STRIP_BACKTICK
(int)
`
)を取り除きます。
FILTER_FLAG_ENCODE_LOW
(int)
FILTER_FLAG_ENCODE_HIGH
(int)
FILTER_FLAG_ENCODE_AMP
(int)
&
をエンコードします。
FILTER_FLAG_NO_ENCODE_QUOTES
(int)
'
および "
をエンコードしません。
FILTER_FLAG_EMPTY_STRING_NULL
(int)
null
に変換します。
FILTER_VALIDATE_BOOL
(int)
"1"
,
"true"
,
"on"
,
"yes"
に対して true
を返します。
"0"
,
"false"
,
"off"
,
"no"
,
""
に対して、false
を返します。
このフィルタが boolean 以外を返すかどうかは、
FILTER_NULL_ON_FAILURE
の値次第です。
この値が設定されていると、null
を返します。
そうでない場合、false
を返します。
default
FILTER_VALIDATE_BOOLEAN
(int)
FILTER_VALIDATE_BOOL
。
このエイリアスは、正規化された名前が実装される前の
PHP 8.0.0 より前のバージョンで利用可能でした。
FILTER_VALIDATE_INT
(int)
注意: 文字列の値は、検証する前に trim() を実行します。
default
min_range
max_range
FILTER_FLAG_ALLOW_OCTAL
(int)
0[0-7]+
) を許可します。
FILTER_FLAG_ALLOW_HEX
(int)
0x[0-9a-fA-F]+
) を許可します。
FILTER_VALIDATE_FLOAT
(int)
注意: 文字列の値は、検証する前に trim() を実行します。
default
decimal
min_range
max_range
FILTER_FLAG_ALLOW_THOUSAND
(int)
,
) を許可します。
これは通常、1000ごとに桁を区切るのに使われます。
FILTER_VALIDATE_REGEXP
(int)
regexp
オプションによって、
指定した正規表現にマッチするかを検証します。
default
regexp
FILTER_VALIDATE_URL
(int)
default
FILTER_FLAG_SCHEME_REQUIRED
(int)
PHP 7.3.0 以降は非推奨になり、
PHP 8.0.0 で削除されました。
FILTER_VALIDATE_URL
フィルタが常にこの処理を含んでいたからです。
FILTER_FLAG_HOST_REQUIRED
(int)
PHP 7.3.0 以降は非推奨になり、
PHP 8.0.0 で削除されました。
FILTER_VALIDATE_URL
フィルタが常にこの処理を含んでいたからです。
FILTER_FLAG_PATH_REQUIRED
(int)
FILTER_FLAG_QUERY_REQUIRED
(int)
正しい URL であっても、
HTTP プロトコル (http://
)
を指定しない場合があります。
よって、URL
が期待通りのプロトコルを使っているかについては、
追加の検証が必要です。
たとえば ssh://
や mailto:
の検証がその例です。
このフィルタは ASCII で構成された URL に対してのみ動作します。 つまり、Internationalized Domain Names (IDN) は常に拒否されるということです。
FILTER_VALIDATE_DOMAIN
(int)
default
FILTER_FLAG_HOSTNAME
(int)
FILTER_VALIDATE_EMAIL
(int)
addr-spec
syntax に照らして検証は行われます。
しかし、コメントやホワイトスペースのフォールディング、
ドットなしのドメイン名はサポートされていません。
よってこれらは拒否されます。
default
FILTER_FLAG_EMAIL_UNICODE
(int)
メールアドレスの検証は複雑なので、 メールアドレスが正しく、かつ存在するかを確認する唯一の方法は、 そのアドレスにメールを送信することです。
FILTER_VALIDATE_IP
(int)
値が IPアドレス かどうかを検証します。
default
FILTER_FLAG_IPV4
(int)
FILTER_FLAG_IPV6
(int)
FILTER_FLAG_NO_RES_RANGE
(int)
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
.
FD
や FC
から始まるものが該当します。
FILTER_FLAG_GLOBAL_RANGE
(int)
Global
属性が True
になっているものが該当します。
PHP 8.2.0 以降で利用可能です。
FILTER_VALIDATE_MAC
(int)
default
FILTER_UNSAFE_RAW
(int)
FILTER_FLAG_STRIP_*
や FILTER_FLAG_ENCODE_*
と一緒に使うと、特殊な文字を除去したり、エンコードしたりできます。
FILTER_DEFAULT
(int)
FILTER_UNSAFE_RAW
.
FILTER_SANITIZE_STRING
(int)
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)
FILTER_FLAG_STRIP_*
,
FILTER_FLAG_ENCODE_*
と一緒に使うことで、特殊文字をエンコードしたり除去することができます。
FILTER_SANITIZE_SPECIAL_CHARS
(int)
以下のHTMLエンコードおよび、ASCII 値が32より小さい値をフィルタします。
'
, "
, <
, >
, &
FILTER_FLAG_STRIP_*
と一緒に使うことで、特殊文字を除去できます。
そして、
FILTER_FLAG_ENCODE_HIGH
と一緒に使うと、ASCII 値 127より大きな値をエンコードできます。
FILTER_SANITIZE_FULL_SPECIAL_CHARS
(int)
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)
FILTER_SANITIZE_MAGIC_QUOTES
(int)
FILTER_SANITIZE_ADD_SLASHES
.
PHP 7.3.0 以降は非推奨になり、 PHP 8.0.0 以降 削除 されています。
FILTER_CALLBACK
(int)
options
パラメータの 'options'
キー経由で callable を渡します。
コールバックは、以下のシグネチャを持ちます:
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
のような他のフィルタフラグと一緒には使えません。
Note: FILTER_NULL_ON_FAILURE, FILTER_REQUIRE_SCALAR, FILTER_REQUIRE_ARRAY and FILTER_FORCE_ARRAY dont have prefix "FILTER_FLAG_" but they are FLAGS!