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)
null
вместо false
, если значение не прошло проверку.
Флаг указывают при проверке значений фильтрами семейства
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)
true
для значений "1"
,
"true"
,
"on"
,
и "yes"
.
Фильтр возвращает значение false
для значений "0"
,
"false"
,
"off"
,
"no"
и ""
.
Флаг FILTER_NULL_ON_FAILURE
изменяет значение результата проверки нелогических значений.
При установке флага вместо возврата значения false
для нелогических значений фильтр возвращает значение null
.
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)
,
,
которыми часто отбивают тысячи.
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:
.
Фильтр проверяет только URL-адреса, которые состоят из ASCII-символов, поэтому отклоняет международные доменные имена (англ. Internationalized Domain Names, IDN).
FILTER_VALIDATE_DOMAIN
(int)
default
FILTER_FLAG_HOSTNAME
(int)
FILTER_VALIDATE_EMAIL
(int)
addr-spec
по стандарту
» RFC 822.
Фильтр не поддерживает комментарии, свёртывание пробельных символов и домены без точек,
поэтому отклоняет такие адреса.
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_*
,
и закодирует символы с ASCII-кодами
больше 127 при установке флага FILTER_FLAG_ENCODE_HIGH
.
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)
,
как стандартный разделитель тысяч.
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)
FILTER_SANITIZE_MAGIC_QUOTES
(int)
FILTER_SANITIZE_ADD_SLASHES
.
Фильтр УСТАРЕЛ с PHP 7.3.0, а с PHP 8.0.0 фильтр УДАЛИЛИ.
FILTER_CALLBACK
(int)
options
как значение, связанное
с ключом 'options'
.
Сигнатура callback-функции:
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
.
Note: FILTER_NULL_ON_FAILURE, FILTER_REQUIRE_SCALAR, FILTER_REQUIRE_ARRAY and FILTER_FORCE_ARRAY dont have prefix "FILTER_FLAG_" but they are FLAGS!