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

PHP
Фильтры данных впервые появились в 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));
Tags:phpvalidationвалидацияфильтры php
Hubs: PHP
+85
22.8k 205
Comments 93

Popular right now

Комплексное обучение PHP
April 19, 202120,000 ₽Loftschool
PHP. Уровень 1. Основы создания сайтов
February 1, 202115,990 ₽Специалист.ру
Профессия Product Manager
January 27, 2021108,500 ₽Нетология
Аналитика для руководителей
January 27, 202167,500 ₽Нетология
Product Manager IT-проектов
January 28, 202160,000 ₽OTUS