PHP 8.5.0 Beta 2 available for testing

定義済み定数

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

入力にまつわる定数

以下の定数は、 filter_input()filter_input_array() で使います。

INPUT_POST (int)
POST 変数。
INPUT_GET (int)
GET 変数。
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", "true", "on", "yes" に対して true を返します。 "0", "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 822addr-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 6890Reserved-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 については、 FDFC から始まるものが該当します。
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_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)
eE 文字を許可することで、 科学的記法の数値を許可します。
警告

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 以降 削除 されています。

ユーザー定義のフィルタ
FILTER_CALLBACK (int)
このフィルタは、フィルタリング処理をユーザー定義の関数に委譲します。 options パラメータの 'options' キー経由で callable を渡します。

コールバックは、以下のシグネチャを持ちます:

callback(string $value): mixed
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 のような他のフィルタフラグと一緒には使えません。

add a note

User Contributed Notes 1 note

up
7
shaman_master at list dot ru
5 years ago
Note: FILTER_NULL_ON_FAILURE, FILTER_REQUIRE_SCALAR, FILTER_REQUIRE_ARRAY and FILTER_FORCE_ARRAY dont have prefix "FILTER_FLAG_" but they are FLAGS!
To Top