1
0
mirror of https://github.com/php/doc-ja.git synced 2026-03-24 07:02:08 +01:00
Files
archived-doc-ja/reference/filter/constants.xml
2025-10-04 07:23:10 +09:00

1271 lines
39 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 9b09581bfdd1fa1c33daa740ad49599cf665cff4 Maintainer: takagi Status: ready -->
<!-- Generated by xml_proto.php v2.4. Found in /scripts directory of phpdoc. -->
<!-- Credits: mumumu -->
<appendix xml:id="filter.constants" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.constants;
&extension.constants;
<variablelist>
<title>入力にまつわる定数</title>
<simpara>
以下の定数は、
<function>filter_input</function>
<function>filter_input_array</function> で使います。
</simpara>
<varlistentry xml:id="constant.input-post">
<term>
<constant>INPUT_POST</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<link linkend="reserved.variables.post">POST</link> 変数。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.input-get">
<term>
<constant>INPUT_GET</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<link linkend="reserved.variables.get">GET</link> 変数。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.input-cookie">
<term>
<constant>INPUT_COOKIE</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<link linkend="reserved.variables.cookies">COOKIE</link> 変数。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.input-env">
<term>
<constant>INPUT_ENV</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<link linkend="reserved.variables.environment">ENV</link> 変数。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.input-server">
<term>
<constant>INPUT_SERVER</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<link linkend="reserved.variables.server">SERVER</link> 変数。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.input-session">
<term>
<constant>INPUT_SESSION</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<link linkend="reserved.variables.session">SESSION</link> 変数。
(PHP 8.0.0 以降で削除されました。それより前のバージョンでも実装されていませんでした)
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.input-request">
<term>
<constant>INPUT_REQUEST</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<link linkend="reserved.variables.request">REQUEST</link> 変数。
(PHP 8.0.0 以降で削除されました。それより前のバージョンでも実装されていませんでした)
</simpara>
</listitem>
</varlistentry>
</variablelist>
<variablelist xml:id="filter.constants.flags.generic">
<title>一般的なフィルタフラグ</title>
<varlistentry xml:id="constant.filter-flag-none">
<term>
<constant>FILTER_FLAG_NONE</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
フィルタしない。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-require-scalar">
<term>
<constant>FILTER_REQUIRE_SCALAR</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
フィルタの入力値がスカラーであることを要求するフラグ。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-require-array">
<term>
<constant>FILTER_REQUIRE_ARRAY</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
フィルタの入力値が配列であることを要求するフラグ。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-force-array">
<term>
<constant>FILTER_FORCE_ARRAY</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
配列を操作するフィルタのために、
スカラーの入力を配列でラップし、
要素を一つ持つ配列にします。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-null-on-failure">
<term>
<constant>FILTER_NULL_ON_FAILURE</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
失敗時には、&false; ではなく &null; を返します。
</simpara>
<simpara>
任意の検証フィルタ
<constant>FILTER_VALIDATE_<replaceable>*</replaceable></constant>
と一緒に使うと便利です。
</simpara>
</listitem>
</varlistentry>
</variablelist>
<variablelist xml:id="filter.constants.flags.sanitization">
<title>除去フィルタのフラグ</title>
<varlistentry xml:id="constant.filter-flag-strip-low">
<term>
<constant>FILTER_FLAG_STRIP_LOW</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
ASCII 値が 32 未満の文字を取り除きます。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-strip-high">
<term>
<constant>FILTER_FLAG_STRIP_HIGH</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
ASCII 値が 127 より大きい文字を取り除きます。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-strip-backtick">
<term>
<constant>FILTER_FLAG_STRIP_BACKTICK</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
バッククォート文字(<literal>`</literal>)を取り除きます。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-encode-low">
<term>
<constant>FILTER_FLAG_ENCODE_LOW</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
ASCII 値が 32 未満の文字をエンコードします。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-encode-high">
<term>
<constant>FILTER_FLAG_ENCODE_HIGH</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
ASCII 値が 127 より大きい文字をエンコードします。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-encode-amp">
<term>
<constant>FILTER_FLAG_ENCODE_AMP</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<literal>&amp;</literal> をエンコードします。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-no-encode-quotes">
<term>
<constant>FILTER_FLAG_NO_ENCODE_QUOTES</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<literal>'</literal> および <literal>"</literal> をエンコードしません。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-empty-string-null">
<term>
<constant>FILTER_FLAG_EMPTY_STRING_NULL</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<!-- TODO Document/check which filters accept this flag (FILTER_UNSAFE_RAW and FILTER_SANITIZE_STRING only) -->
除去フラグを適用した結果が空文字列だった場合、
その値を &null; に変換します。
</simpara>
</listitem>
</varlistentry>
</variablelist>
<variablelist xml:id="filter.constants.validation">
<title>検証フィルタ</title>
<varlistentry xml:id="constant.filter-validate-bool">
<term>
<constant>FILTER_VALIDATE_BOOL</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<literal>"1"</literal>,
2進数、8進数、16進数記法の <literal>1</literal>,
<literal>1.0</literal>,
<literal>"true"</literal>, <literal>true</literal>,
<literal>"on"</literal>,
<literal>"yes"</literal>
に対して、&true; を返します。
</simpara>
<simpara>
<literal>"0"</literal>,
2進数、8進数、16進数記法の <literal>0</literal>,
<literal>0.0</literal>,
<literal>"false"</literal>, <literal>false</literal>,
<literal>"off"</literal>,
<literal>"no"</literal>,
<literal>""</literal> に対して、&false; を返します。
</simpara>
<simpara>
文字列の値は、大文字小文字の区別をせず比較されます。
このフィルタが boolean 以外を返すかどうかは、
<constant>FILTER_NULL_ON_FAILURE</constant> の値次第です。
この値が設定されていると、&null; を返します。
そうでない場合、&false; を返します。
</simpara>
<variablelist xml:id="filter.constants.validation.bool.options">
<title>利用可能なオプション</title>
<varlistentry>
<term><literal>default</literal></term>
<listitem>
<simpara>
フィルタが失敗した場合に返す値
</simpara>
</listitem>
</varlistentry>
</variablelist>
<simpara>
PHP 8.0.0 以降で利用可能です。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-validate-boolean">
<term>
<constant>FILTER_VALIDATE_BOOLEAN</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
&Alias; <constant>FILTER_VALIDATE_BOOL</constant>
このエイリアスは、正規化された名前が実装される前の
PHP 8.0.0 より前のバージョンで利用可能でした。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-validate-int">
<term>
<constant>FILTER_VALIDATE_INT</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
値が整数値かどうかを検証します。
検証が成功すると、<type>int</type> 型に変換されます。
</simpara>
<note>
<simpara>
文字列の値は、検証する前に <function>trim</function> を実行します。
</simpara>
</note>
<variablelist xml:id="filter.constants.validation.int.options">
<title>利用可能なオプション</title>
<varlistentry>
<term><literal>default</literal></term>
<listitem>
<simpara>
フィルタが失敗した場合に返す値
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>min_range</literal></term>
<listitem>
<simpara>
指定した値と等しい、
またはそれより大きな場合にのみ値が正しいとみなされます。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>max_range</literal></term>
<listitem>
<simpara>
指定した値と等しい、
またはそれより小さな場合にのみ値が正しいとみなされます。
</simpara>
</listitem>
</varlistentry>
</variablelist>
<variablelist xml:id="filter.constants.validation.int.flags">
<title>オプションのフラグ</title>
<varlistentry xml:id="constant.filter-flag-allow-octal">
<term>
<constant>FILTER_FLAG_ALLOW_OCTAL</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<!-- TODO: Check that explicit octal prefix 0o and 0O are allowed -->
8 進表記 (<literal>0[0-7]+</literal>) を許可します。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-allow-hex">
<term>
<constant>FILTER_FLAG_ALLOW_HEX</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
16 進表記 (<literal>0x[0-9a-fA-F]+</literal>) を許可します。
</simpara>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-validate-float">
<term>
<constant>FILTER_VALIDATE_FLOAT</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
値が浮動小数点数かどうかを検証します。
検証が成功すると、<type>float</type> 型に変換されます。
</simpara>
<note>
<simpara>
文字列の値は、検証する前に <function>trim</function> を実行します。
</simpara>
</note>
<variablelist xml:id="filter.constants.validation.float.options">
<title>利用可能なオプション</title>
<varlistentry>
<term><literal>default</literal></term>
<listitem>
<simpara>
フィルタが失敗した場合に返す値
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>decimal</literal></term>
<listitem>
<simpara>
<!-- TODO -->
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>min_range</literal></term>
<listitem>
<simpara>
指定した値と等しい、
またはそれより大きな場合にのみ値が正しいとみなされます。
PHP 7.4.0 以降で利用可能です。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>max_range</literal></term>
<listitem>
<simpara>
指定した値と等しい、
またはそれより小さな場合にのみ値が正しいとみなされます。
PHP 7.4.0 以降で利用可能です。
</simpara>
</listitem>
</varlistentry>
</variablelist>
<variablelist xml:id="filter.constants.validation.float.flags">
<title>オプションのフラグ</title>
<varlistentry>
<term>
<constant>FILTER_FLAG_ALLOW_THOUSAND</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
桁区切り文字 (<literal>,</literal>) を許可します。
これは通常、1000ごとに桁を区切るのに使われます。
</simpara>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-validate-regexp">
<term>
<constant>FILTER_VALIDATE_REGEXP</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<literal>regexp</literal> オプションによって、
指定した正規表現にマッチするかを検証します。
</simpara>
<variablelist xml:id="filter.constants.validation.regex.options">
<title>利用可能なオプション</title>
<varlistentry>
<term><literal>default</literal></term>
<listitem>
<simpara>
フィルタが失敗した場合に返す値
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>regexp</literal></term>
<listitem>
<simpara>
<link linkend="book.pcre">PCRE</link> 互換の正規表現
</simpara>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-validate-url">
<term>
<constant>FILTER_VALIDATE_URL</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<acronym>URL</acronym>
<link xlink:href="&url.rfc;2396">RFC 2396</link>
に照らして正しいかを検証します。
</simpara>
<variablelist xml:id="filter.constants.validation.url.options">
<title>利用可能なオプション</title>
<varlistentry>
<term><literal>default</literal></term>
<listitem>
<simpara>
フィルタが失敗した場合に返す値
</simpara>
</listitem>
</varlistentry>
</variablelist>
<variablelist xml:id="filter.constants.validation.url.flags">
<title>オプションのフラグ</title>
<varlistentry xml:id="constant.filter-flag-scheme-required">
<term>
<constant>FILTER_FLAG_SCHEME_REQUIRED</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<acronym>URL</acronym> に scheme 部分を必須とします。
</simpara>
<warning>
<simpara>
PHP 7.3.0 以降は<emphasis>非推奨</emphasis>になり、
PHP 8.0.0 で<emphasis>削除</emphasis>されました。
<constant>FILTER_VALIDATE_URL</constant>
フィルタが常にこの処理を含んでいたからです。
</simpara>
</warning>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-host-required">
<term>
<constant>FILTER_FLAG_HOST_REQUIRED</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<acronym>URL</acronym> に host 部分を必須とします。
</simpara>
<warning>
<simpara>
PHP 7.3.0 以降は<emphasis>非推奨</emphasis>になり、
PHP 8.0.0 で<emphasis>削除</emphasis>されました。
<constant>FILTER_VALIDATE_URL</constant>
フィルタが常にこの処理を含んでいたからです。
</simpara>
</warning>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-path-required">
<term>
<constant>FILTER_FLAG_PATH_REQUIRED</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<acronym>URL</acronym> に path 部分を必須とします。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-query-required">
<term>
<constant>FILTER_FLAG_QUERY_REQUIRED</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<acronym>URL</acronym> に query 部分を必須とします。
</simpara>
</listitem>
</varlistentry>
</variablelist>
<warning>
<simpara>
正しい <acronym>URL</acronym> であっても、
<acronym>HTTP</acronym> プロトコル (<literal>http://</literal>)
を指定しない場合があります。
よって、<acronym>URL</acronym>
が期待通りのプロトコルを使っているかについては、
追加の検証が必要です。
たとえば <literal>ssh://</literal><literal>mailto:</literal>
の検証がその例です。
</simpara>
</warning>
<warning>
<simpara>
このフィルタは
<acronym>ASCII</acronym> で構成された
<acronym>URL</acronym> に対してのみ動作します。
つまり、Internationalized Domain Names (IDN)
は常に拒否されるということです。
</simpara>
</warning>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-validate-domain">
<term>
<constant>FILTER_VALIDATE_DOMAIN</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
ドメイン名が
<link xlink:href="&url.rfc;952">RFC 952</link>,
<link xlink:href="&url.rfc;1034">RFC 1034</link>,
<link xlink:href="&url.rfc;1035">RFC 1035</link>,
<link xlink:href="&url.rfc;1034">RFC 1123</link>,
<link xlink:href="&url.rfc;1034">RFC 2732</link>,
<link xlink:href="&url.rfc;2181">RFC 2181</link>
に照らして正しいかを検証します。
</simpara>
<variablelist xml:id="filter.constants.validation.domain.options">
<title>利用可能なオプション</title>
<varlistentry>
<term><literal>default</literal></term>
<listitem>
<simpara>
フィルタが失敗した場合に返す値
</simpara>
</listitem>
</varlistentry>
</variablelist>
<variablelist xml:id="filter.constants.validation.domain.flags">
<title>オプションのフラグ</title>
<varlistentry xml:id="constant.filter-flag-hostname">
<term>
<constant>FILTER_FLAG_HOSTNAME</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
アルファベットと数字から始まり、
アルファベットと数字およびハイフンだけを含むホスト名を必須とします。
</simpara>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-validate-email">
<term>
<constant>FILTER_VALIDATE_EMAIL</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
値が "正しい" メールアドレスかどうかを検証します。
</simpara>
<simpara>
<link xlink:href="&url.rfc;822">RFC 822</link>
<literal>addr-spec</literal> syntax に照らして検証は行われます。
しかし、コメントやホワイトスペースのフォールディング、
ドットなしのドメイン名はサポートされていません。
よってこれらは拒否されます。
</simpara>
<variablelist xml:id="filter.constants.validation.email.options">
<title>利用可能なオプション</title>
<varlistentry>
<term><literal>default</literal></term>
<listitem>
<simpara>
フィルタが失敗した場合に返す値
</simpara>
</listitem>
</varlistentry>
</variablelist>
<variablelist xml:id="filter.constants.validation.email.flags">
<title>オプションのフラグ</title>
<varlistentry xml:id="constant.filter-flag-email-unicode">
<term>
<constant>FILTER_FLAG_EMAIL_UNICODE</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
local の部分に Unicode を許可します。
PHP 7.1.0 以降で利用可能です。
</simpara>
</listitem>
</varlistentry>
</variablelist>
<warning>
<simpara>
メールアドレスの検証は複雑なので、
メールアドレスが正しく、かつ存在するかを確認する唯一の方法は、
そのアドレスにメールを送信することです。
</simpara>
</warning>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-validate-ip">
<term>
<constant>FILTER_VALIDATE_IP</constant>
(<type>int</type>)
</term>
<listitem>
<para>
値が IPアドレス かどうかを検証します。
</para>
<variablelist xml:id="filter.constants.validation.ip.options">
<title>利用可能なオプション</title>
<varlistentry>
<term><literal>default</literal></term>
<listitem>
<simpara>
フィルタが失敗した場合に返す値
</simpara>
</listitem>
</varlistentry>
</variablelist>
<variablelist xml:id="filter.constants.validation.ip.flags">
<title>オプションのフラグ</title>
<varlistentry xml:id="constant.filter-flag-ipv4">
<term>
<constant>FILTER_FLAG_IPV4</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
IPv4 アドレスを許可します。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-ipv6">
<term>
<constant>FILTER_FLAG_IPV6</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
IPv6 アドレスを許可します。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-no-res-range">
<term>
<constant>FILTER_FLAG_NO_RES_RANGE</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
予約済みアドレスを拒否します。
</simpara>
<simpara>
<link xlink:href="&url.rfc;6890">RFC 6890</link>
<literal>Reserved-By-Protocol</literal>
としてマークされているアドレスが該当します。
</simpara>
<para>
IPv4 については、以下の範囲が該当します:
<simplelist type="inline">
<member><literal>0.0.0.0/8</literal></member>
<member><literal>169.254.0.0/16</literal></member>
<member><literal>127.0.0.0/8</literal></member>
<member><literal>240.0.0.0/4</literal></member>
</simplelist>
</para>
<para>
IPv6 については、以下の範囲が該当します:
<simplelist type="inline">
<member><literal>::1/128</literal></member>
<member><literal>::/128</literal></member>
<member><literal>::FFFF:0:0/96</literal></member>
<member><literal>FE80::/10</literal></member>
</simplelist>
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-no-priv-range">
<term>
<constant>FILTER_FLAG_NO_PRIV_RANGE</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
プライベートアドレスを拒否します。
</simpara>
<para>
IPv4 については、以下の範囲が該当します:
<simplelist type="inline">
<member><literal>10.0.0.0/8</literal></member>
<member><literal>172.16.0.0/12</literal></member>
<member><literal>192.168.0.0/16</literal></member>
</simplelist>.
</para>
<simpara>
IPv6 については、
<literal>FD</literal><literal>FC</literal>
から始まるものが該当します。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-global-range">
<term>
<constant>FILTER_FLAG_GLOBAL_RANGE</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
グローバルアドレスのみを許可します。
<link xlink:href="&url.rfc;6890">RFC 6890</link> で、
<literal>Global</literal> 属性が <literal>True</literal>
になっているものが該当します。
PHP 8.2.0 以降で利用可能です。
</simpara>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-validate-mac">
<term>
<constant>FILTER_VALIDATE_MAC</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
値が MACアドレス かどうかを検証します。
</simpara>
<variablelist xml:id="filter.constants.validation.mac.options">
<title>利用可能なオプション</title>
<varlistentry>
<term><literal>default</literal></term>
<listitem>
<simpara>
フィルタが失敗した場合に返す値
</simpara>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
</variablelist>
<variablelist xml:id="filter.constants.sanitization">
<title>除去フィルタ</title>
<varlistentry xml:id="constant.filter-unsafe-raw">
<term>
<constant>FILTER_UNSAFE_RAW</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
このフィルタは何もしません。
</simpara>
<simpara>
しかし、<constant>FILTER_FLAG_STRIP_<replaceable>*</replaceable></constant>
<constant>FILTER_FLAG_ENCODE_<replaceable>*</replaceable></constant>
と一緒に使うと、特殊な文字を除去したり、エンコードしたりできます。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-default">
<term>
<constant>FILTER_DEFAULT</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
&Alias; <constant>FILTER_UNSAFE_RAW</constant>.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-sanitize-string">
<term>
<constant>FILTER_SANITIZE_STRING</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
このフィルタは、タグを除去したり、
ダブルクォートやシングルクォートを HTML-エンコードしたりします。
</simpara>
<simpara>
フィルタ除去フラグ
<constant>FILTER_FLAG_STRIP_<replaceable>*</replaceable></constant>,
<constant>FILTER_FLAG_ENCODE_<replaceable>*</replaceable></constant>
と一緒に使うことで、特殊文字を除去したり、エンコードしたりもできます。
</simpara>
<simpara>
クォートをエンコードする際の振る舞いは、
フィルタフラグ <constant>FILTER_FLAG_NO_ENCODE_QUOTES</constant>
を使うことで無効にできます。
</simpara>
<warning>
<simpara>
PHP 8.1.0 以降は、このフィルタは <emphasis>推奨されません</emphasis>
代わりに、<function>htmlspecialchars</function> を使いましょう。
</simpara>
</warning>
<warning>
<simpara>
このフィルタがタグを除去する方法は、
<function>strip_tags</function> と同じではありません。
</simpara>
</warning>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-sanitize-stripped">
<term>
<constant>FILTER_SANITIZE_STRIPPED</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
&Alias; <constant>FILTER_SANITIZE_STRING</constant>.
</simpara>
<warning>
<simpara>
PHP 8.1.0 以降は、このフィルタは <emphasis>推奨されません</emphasis>
代わりに、<function>htmlspecialchars</function> を使いましょう。
</simpara>
</warning>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-sanitize-encoded">
<term>
<constant>FILTER_SANITIZE_ENCODED</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
このフィルタは、文字列をURLエンコードします。
</simpara>
<simpara>
このフィルタは、フィルタ除去フラグ
<constant>FILTER_FLAG_STRIP_<replaceable>*</replaceable></constant>,
<constant>FILTER_FLAG_ENCODE_<replaceable>*</replaceable></constant>
と一緒に使うことで、特殊文字をエンコードしたり除去することができます。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-sanitize-special-chars">
<term>
<constant>FILTER_SANITIZE_SPECIAL_CHARS</constant>
(<type>int</type>)
</term>
<listitem>
<para>
以下のHTMLエンコードおよび、ASCII 値が32より小さい値をフィルタします。
<simplelist type="inline">
<member><literal>'</literal></member>
<member><literal>"</literal></member>
<member><literal>&lt;</literal></member>
<member><literal>&gt;</literal></member>
<member><literal>&amp;</literal></member>
</simplelist>
<constant>FILTER_SANITIZE_FULL_SPECIAL_CHARS</constant>
と異なり、
<constant>FILTER_SANITIZE_SPECIAL_CHARS</constant>
フィルタは
<constant>FILTER_FLAG_NO_ENCODE_QUOTES</constant>
フラグを無視します。
</para>
<simpara>
除去フラグ
<constant>FILTER_FLAG_STRIP_<replaceable>*</replaceable></constant>
と一緒に使うことで、特殊文字を除去できます。
そして、
<constant>FILTER_FLAG_ENCODE_HIGH</constant>
と一緒に使うと、ASCII 値 127より大きな値をエンコードできます。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-sanitize-full-special-chars">
<term>
<constant>FILTER_SANITIZE_FULL_SPECIAL_CHARS</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
このフィルタは、
<function>htmlspecialchars</function>
<constant>ENT_QUOTES</constant>
と一緒にコールした場合と同じです。
</simpara>
<simpara>
クォートをエンコードする際の振る舞いは、
フィルタフラグ
<constant>FILTER_FLAG_NO_ENCODE_QUOTES</constant>
を使うと無効にできます。
</simpara>
<warning>
<simpara>
<function>htmlspecialchars</function> と同様に、
このフィルタは INI 設定
<link linkend="ini.default-charset">default_charset</link>
を認識します。
現在の文字セットに照らして不正なバイトシーケンスが検知された場合、
文字列全体が拒否され、空の文字列が返されます。
</simpara>
</warning>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-sanitize-email">
<term>
<constant>FILTER_SANITIZE_EMAIL</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
ラテン文字 (<literal>[a-zA-Z]</literal>),
数字 (<literal>[0-9]</literal>),
そして特殊文字
<literal>!#$%&amp;'*+-=?^_`{|}~@.[]</literal>
以外の文字を全て除去します。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-sanitize-url">
<term>
<constant>FILTER_SANITIZE_URL</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
ラテン文字 (<literal>[a-zA-Z]</literal>),
数字 (<literal>[0-9]</literal>),
そして特殊文字
<literal>$-_.+!*'(),{}|\\^~[]`&lt;&gt;#%";/?:@&amp;=</literal>.
以外の文字を全て除去します。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-sanitize-number-int">
<term>
<constant>FILTER_SANITIZE_NUMBER_INT</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
(<literal>[0-9]</literal>), (<literal>+</literal>),
(<literal>-</literal>) 以外の文字を全て除去し余す。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-sanitize-number-float">
<term>
<constant>FILTER_SANITIZE_NUMBER_FLOAT</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
(<literal>[0-9]</literal>), (<literal>+</literal>),
(<literal>-</literal>) 以外の文字を全て除去し余す。
</simpara>
<variablelist xml:id="filter.constants.sanitization.float.flags">
<title>オプションのフラグ</title>
<varlistentry xml:id="constant.filter-flag-allow-fraction">
<term>
<constant>FILTER_FLAG_ALLOW_FRACTION</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
ドット文字 (<literal>.</literal>) を許可します。
これは通常、整数部分と少数部分の区切りを表します。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-allow-thousand">
<term>
<constant>FILTER_FLAG_ALLOW_THOUSAND</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
桁区切り文字 (<literal>,</literal>) を許可します。
これは通常、1000ごとに桁を区切るのに使われます。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-flag-allow-scientific">
<term>
<constant>FILTER_FLAG_ALLOW_SCIENTIFIC</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
<literal>e</literal><literal>E</literal> 文字を許可することで、
科学的記法の数値を許可します。
</simpara>
</listitem>
</varlistentry>
</variablelist>
<warning>
<simpara>
<constant>FILTER_FLAG_ALLOW_FRACTION</constant> フラグを使わない場合、
10進数のセパレータは削除され、変更された値を受け取ることになります。
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?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));
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
string(4) "1234"
string(5) "12.34"
]]>
</screen>
</informalexample>
</warning>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-sanitize-add-slashes">
<term>
<constant>FILTER_SANITIZE_ADD_SLASHES</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
入力に対して <function>addslashes</function> を適用します。
PHP 7.3.0 以降で利用可能です。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-sanitize-magic-quotes">
<term>
<constant>FILTER_SANITIZE_MAGIC_QUOTES</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
&Alias; <constant>FILTER_SANITIZE_ADD_SLASHES</constant>.
</simpara>
<warning>
<simpara>
PHP 7.3.0 以降は<emphasis>非推奨</emphasis>になり、
PHP 8.0.0 以降 <emphasis>削除</emphasis> されています。
</simpara>
</warning>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<title>ユーザー定義のフィルタ</title>
<varlistentry xml:id="constant.filter-callback">
<term>
<constant>FILTER_CALLBACK</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
このフィルタは、フィルタリング処理をユーザー定義の関数に委譲します。
<parameter>options</parameter> パラメータの <literal>'options'</literal>
キー経由で <type>callable</type> を渡します。
</simpara>
<para>
コールバックは、以下のシグネチャを持ちます:
<methodsynopsis>
<type>mixed</type><methodname><replaceable>callback</replaceable></methodname>
<methodparam><type>string</type><parameter>value</parameter></methodparam>
</methodsynopsis>
<variablelist role="function_parameters">
<varlistentry>
<term><parameter>value</parameter></term>
<listitem>
<simpara>
フィルタされる値
</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
<note>
<simpara>
コールバックから返される値が、
フィルタ関数の呼び出しで返される値になります。
</simpara>
</note>
<example>
<title>
ログイン名を検証するために
<constant>FILTER_CALLBACK</constant>
を使う例
</title>
<programlisting role="php">
<![CDATA[
<?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);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
string(10) "val1dL0gin"
NULL
]]>
</screen>
</example>
<warning>
<simpara>
このフィルタは、
<constant>FILTER_NULL_ON_FAILURE</constant>
のような他のフィルタフラグと一緒には使えません。
</simpara>
</warning>
</listitem>
</varlistentry>
</variablelist>
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->