1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-23 23:32:16 +01:00
Files
archived-doc-ru/reference/filter/constants.xml
2025-10-05 14:03:33 +03:00

1246 lines
45 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 9b09581bfdd1fa1c33daa740ad49599cf665cff4 Maintainer: shein Status: ready -->
<!-- Reviewed: no -->
<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>
Проверять, принадлежит ли входное значение типу <type>array</type>.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-force-array">
<term>
<constant>FILTER_FORCE_ARRAY</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
Оборачивать скалярные входные данные в одноэлементный массив (<type>array</type>)
для фильтров, которые обрабатывают массивы.
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.filter-null-on-failure">
<term>
<constant>FILTER_NULL_ON_FAILURE</constant>
(<type>int</type>)
</term>
<listitem>
<simpara>
Фильтр возвращает &null; вместо &false;, если значение не прошло проверку.
</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>
Фильтр возвращает значение &true; для значений <literal>"1"</literal>,
<literal>1</literal> (включая двоичную, восьмеричную и шестнадцатеричную нотации), <literal>1.0</literal>,
<literal>"true"</literal>, <literal>true</literal>,
<literal>"on"</literal>,
и <literal>"yes"</literal>.
</simpara>
<simpara>
Фильтр возвращает значение &false; для значений <literal>"0"</literal>,
<literal>0</literal> (включая двоичную, восьмеричную и шестнадцатеричную нотации), <literal>0.0</literal>,
<literal>"false"</literal>, <literal>false</literal>,
<literal>"off"</literal>,
<literal>"no"</literal>
и <literal>""</literal>.
</simpara>
<simpara>
Строковые значения сравнивают без учёта регистра.
С флагом <constant>FILTER_NULL_ON_FAILURE</constant> функция
изменяет значение результата проверки нелогических значений.
При установке флага вместо возврата значения &false; для нелогических значений функция возвращает значение &null;.
</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 -->
Пропускает целочисленные значения в восьмеричной нотации,
которая соответствует шаблону <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>
Пропускает целочисленные значения в шестнадцатеричной нотации,
которая соответствует шаблону <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>,
которыми часто отбивают тысячи.
</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">Perl-совместимые</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>-адрес схему ресурса.
</simpara>
<warning>
<simpara>
Флаг <emphasis>УСТАРЕЛ</emphasis> с PHP 7.3.0,
а с 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>-адрес хост.
</simpara>
<warning>
<simpara>
Флаг <emphasis>УСТАРЕЛ</emphasis> с PHP 7.3.0,
а с 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>-адрес путь.
</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>-адрес аргументы запроса.
</simpara>
</listitem>
</varlistentry>
</variablelist>
<warning>
<simpara>
К допустимым <acronym>URL</acronym>-адресам относятся не только ресурсы
со схемой <literal>http://</literal>, которая определяет <acronym>HTTP</acronym>-протокол,
поэтому иногда требуется дополнительная проверка, которая определит,
содержит ли <acronym>URL</acronym>-адрес конкретный протокол
наподобие <literal>ssh://</literal> или идентификатор схемы наподобие <literal>mailto:</literal>.
</simpara>
</warning>
<warning>
<simpara>
Фильтр проверяет только <acronym>URL</acronym>-адреса, которые состоят из <acronym>ASCII</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>
Фильтр проверяет, соответствует ли почтовый адрес синтаксису спецификации <literal>addr-spec</literal>
по стандарту
<link xlink:href="&url.rfc;822">RFC 822</link>.
Фильтр не поддерживает комментарии, свёртывание пробельных символов и домены без точек,
поэтому отклоняет такие адреса.
</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>
Флаг разрешает фильтру принимать символы Юникода в локальной части адреса, которая идёт перед символом @.
Флаг доступен с 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>Available options</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>
Фильтр <emphasis>устарел</emphasis> с PHP 8.1.0,
вместо него спецсимволы преобразовывают функцией <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>
Фильтр <emphasis>устарел</emphasis> с PHP 8.1.0,
вместо него спецсимволы преобразовывают функцией <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-сущности символы
<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>
и символы с ASCII-кодами меньше 32.
Фильтр <constant>FILTER_SANITIZE_SPECIAL_CHARS</constant> игнорирует
флаг <constant>FILTER_FLAG_NO_ENCODE_QUOTES</constant>,
в отличие от фильтра <constant>FILTER_SANITIZE_FULL_SPECIAL_CHARS</constant>.
</para>
<simpara>
Фильтр дополнительно удалит символы, если работает
совместно с флагами очистки из семейства <constant>FILTER_FLAG_STRIP_<replaceable>*</replaceable></constant>,
и закодирует символы с ASCII-кодами
больше 127 при установке флага <constant>FILTER_FLAG_ENCODE_HIGH</constant>.
</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>
как стандартный разделитель тысяч.
</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>
фильтр удаляет десятичный разделитель, чем изменяет входное значение.
</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>
Фильтр <emphasis>УСТАРЕЛ</emphasis> с PHP 7.3.0,
а с 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>
Фильтр делегирует фильтрацию пользовательской функции.
Выражение <type>callable</type> передаётся
через параметр <parameter>options</parameter> как значение, связанное
с ключом <literal>'options'</literal>.
</simpara>
<para>
Сигнатура callback-функции:
<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>
Значение возврата callback-функции вернётся
как значение возврата из функции фильтрации.
</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
-->