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)
Флаг проверяет, принадлежит ли входное значение типу array.
FILTER_FORCE_ARRAY (int)
Флаг оборачивает скалярные входные данные в одноэлементный массив (array) для фильтров, которые обрабатывают массивы.
FILTER_NULL_ON_FAILURE (int)
Фильтр возвращает null вместо false, если значение не прошло проверку. Флаг указывают при проверке значений фильтрами семейства 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)
Фильтр возвращает значение true для значений "1", "true", "on", и "yes". Фильтр возвращает значение false для значений "0", "false", "off", "no" и "". Флаг FILTER_NULL_ON_FAILURE изменяет значение результата проверки нелогических значений. При установке флага вместо возврата значения false для нелогических значений фильтр возвращает значение null.
Доступные опции
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)
Пропускает целочисленные значения в восьмеричной нотации, которая соответствует шаблону 0[0-7]+.
FILTER_FLAG_ALLOW_HEX (int)
Пропускает целочисленные значения в шестнадцатеричной нотации, которая соответствует шаблону 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)
Флаг разрешает фильтру пропускать значения с запятыми ,, которыми часто отбивают тысячи.
FILTER_VALIDATE_REGEXP (int)
Фильтр проверяет, соответствует ли значение регулярному выражению, которое указали в опции regexp.
Доступные опции
default
Значение, которое вернёт фильтр, если входные данные не пройдут проверку.
regexp
Perl-совместимые регулярные выражения.
FILTER_VALIDATE_URL (int)
Фильтр проверяет, соответствует ли URL-адрес стандарту » RFC 2396.
Доступные опции
default
Значение, которое вернёт фильтр, если входные данные не пройдут проверку.
Дополнительные флаги
FILTER_FLAG_SCHEME_REQUIRED (int)
Флаг проверяет, содержит ли URL-адрес схему ресурса.
Внимание

Флаг УСТАРЕЛ с PHP 7.3.0, а с PHP 8.0.0 флаг УДАЛИЛИ, поскольку фильтр FILTER_VALIDATE_URL и без того проверяет, содержит ли адрес схему.

FILTER_FLAG_HOST_REQUIRED (int)
Флаг проверяет, содержит ли URL-адрес хост.
Внимание

Флаг УСТАРЕЛ с PHP 7.3.0, а с PHP 8.0.0 флаг УДАЛИЛИ, поскольку фильтр FILTER_VALIDATE_URL и без того проверяет, содержит ли адрес хост.

FILTER_FLAG_PATH_REQUIRED (int)
Флаг проверяет, содержит ли URL-адрес путь.
FILTER_FLAG_QUERY_REQUIRED (int)
Флаг проверяет, содержит ли URL-адрес аргументы запроса.
Внимание

К допустимым URL-адресам относятся не только ресурсы со схемой http://, которая определяет HTTP-протокол, поэтому иногда требуется дополнительная проверка, которая определит, содержит ли URL-адрес конкретный протокол наподобие ssh:// или идентификатор схемы наподобие mailto:.

Внимание

Фильтр проверяет только URL-адреса, которые состоят из ASCII-символов, поэтому отклоняет международные доменные имена (англ. 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)
Фильтр проверяет, «допустим» ли адрес эл. почты. Фильтр проверяет, соответствует ли почтовый адрес синтаксису спецификации addr-spec по стандарту » RFC 822. Фильтр не поддерживает комментарии, свёртывание пробельных символов и домены без точек, поэтому отклоняет такие адреса.
Доступные опции
default
Значение, которое вернёт фильтр, если входные данные не пройдут проверку.
Дополнительные флаги
FILTER_FLAG_EMAIL_UNICODE (int)
Флаг разрешает фильтру принимать символы Юникода в локальной части адреса, которая идёт перед символом @. Флаг доступен с PHP 7.1.0.
Внимание

Проверка адреса эл. почты сложна, и единственный надёжный способ подтвердить корректность и доступность адреса — отправить электронное письмо адресату.

FILTER_VALIDATE_IP (int)

Фильтр проверяет значение как IP-адрес.

Available options
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_FLAG_STRIP_*, и закодирует символы с ASCII-кодами больше 127 при установке флага FILTER_FLAG_ENCODE_HIGH.
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)
Флаг разрешает фильтру пропускать символ , как стандартный разделитель тысяч.
FILTER_FLAG_ALLOW_SCIENTIFIC (int)
Пропускает числа в научной нотации с символами e и E.
Внимание

Без флага FILTER_FLAG_ALLOW_FRACTION фильтр удаляет десятичный разделитель, чем изменяет входное значение.

<?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)
Фильтр делегирует фильтрацию пользовательской функции. Выражение callable передаётся через параметр options как значение, связанное с ключом 'options'.

Сигнатура callback-функции:

callback(string $value): mixed
value
Значение для фильтрации.

Замечание: Значение возврата callback-функции вернётся как значение возврата из функции фильтрации.

Пример #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.

Добавить

Примечания пользователей 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