Как стать автором
Обновить

Фильтры: смерть регуляркам и правильная валидация

Время на прочтение2 мин
Количество просмотров25K
Фильтры данных впервые появились в PHP 5.0, и по какому-то стечению обстоятельств остались незамечеными большй частью кодеров. Наверное, это можно объяснить отсутствием чего-нибудь подобного в PHP4, а может просто мануал плохо читали. Я тоже узнал про них случайно… А ведь эта замечательная функция позволяет избавиться от запутаных, и подчас некорректных, регулярных выражений, при выполнении типичных задач.
Мануал по фильтрам находится здесь. Приведу только основную информацию и пару практичных примеров.

Ближе к делу


Во-первых, фильтры разделены на 3 типа:
  1. Validate Filters — проверяющие фильтры
  2. Sanitize Filters — обезопашивающие фильтры
  3. Other Filters — другие фильтры

Фильтры первого типа проверяют соответствие строки фильтру. Ответ от такого фильтра — исходная строка в случае удачи или false.
Фильтры второго типа обрабатывают строку и возвращают её в отфильтрованном виде.
Третий тип включает только один фильтр — FILTER_CALLBACK, который передаст строку пользовательской функции и вернет её ответ.

Основная функция для работы с фильтрами — filter_var:
mixed filter_var ( mixed $variable [, int $filter = FILTER_DEFAULT [, mixed $options ]] )

Первый параметр — переменная, подлежащая валидации, второй — номер фильтра, который удобно записывается предопределенной константой. Третим параметром можно передать дополнительные опции, как правило — специальные флаги фильтров. Возвращаемое значение зависит от фильтра.

На последок — пара примеров работы:

// Проверка e-mail
$var = 'mail@example.com';
var_dump(filter_var($var, FILTER_VALIDATE_EMAIL));
$var = 'mail@exa_mple.com';
var_dump(filter_var($var, FILTER_VALIDATE_EMAIL));

// Проверка IP
$var = '2001:471:1f11:251:290:27ff:fee0:2093';
// Это IPv4?
var_dump(filter_var($var, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4));
// Может, это IPv6?
var_dump(filter_var($var, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6));
Теги:
Хабы:
Всего голосов 161: ↑123 и ↓38+85
Комментарии93

Публикации

Истории

Работа

PHP программист
121 вакансия

Ближайшие события

Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
OTUS CONF: GameDev
Дата30 мая
Время19:00 – 20:30
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область