X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Фильтры: смерть регуляркам и правильная валидация
sc2r2bey
sc2r2bey
Topic Starter сообщение 27.11.2010, 0:26; Ответить: sc2r2bey
Сообщение #1


Фильтры данных впервые появились в 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 ]] )

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

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


[php]// Проверка 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));[/php]

Оригинал статьи и обсуждение.


--------------------
Заметки о разработке и не только
программирую web и для we


Поблагодарили: (1)
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
mazeltov
mazeltov
сообщение 27.11.2010, 1:51; Ответить: mazeltov
Сообщение #2


Спасибо, интересно было почитать. Раньше про фильтры не слышал.
Хорошо бы прочитать мануал на русском - с английским не дружу.

Честно говоря, привык уже к регуляркам, считаю, что они более гибки и определённо универсальнее.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 27.11.2010, 15:51; Ответить: ZiTosS
Сообщение #3


surfer, фильтры как уже сказали построены на тех же самых регулярках, только имеют красивую обертку. Данные функции писали тоже люди, и они что-то пропустить или написать неправильно. Так же нет поддержки кириллицы ди и вообще национальных языков к примеру в email'ах, а ведь сейчас национальные домены переживают пик популярности :)
Они никогда не заменят регулярки, т.к. на регулярках можно прописать любую конструкцию на проверку. Тут же использются четко определенные константы. Конечно кто-то может сказать "а кто нам мешает добавить своих констант со своими шаблонами регулярок?", я отвечу - а кто нам мешает тоже самое сделать с регулярками.
Данные функции ничего не заменяют, они обертывают регулярки для определенных нужд: проверки, фильтрации, обработки. Ничем они не лучше регулярок, за исключением (в некоторых случаях) наличием уже предопределенных шаблонов проверки, фильтрации и т.п.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Правильная внутренняя оптимизация сайтов (SEO - Seach Engines Optimization)
Работу делаем качественно и с любовью + Скидки
0 ITstaf 974 20.7.2022, 10:17
автор: ITstaf
Открытая тема (нет новых ответов) Рейтинг Facebook постов-ссылок (RU и EN) + тематики постов, поиск похожих, фильтры, сортировки
4 Beyond 4055 10.10.2018, 13:06
автор: Beyond
Открытая тема (нет новых ответов) Партнерки и фильтры
есть вопросы
3 grumdas 2332 25.1.2016, 0:08
автор: Костяныч
Горячая тема (нет новых ответов) Правильная внутренняя оптимизация сайтов (SEO - Seach Engines Optimization)
Работу делаем качественно и с любовью (Недорого + Скидки)
113 WebNark 55609 22.12.2015, 21:17
автор: WebNark
Открытая тема (нет новых ответов) SEO Консультации. Яндекс, Google, Фильтры.
Стоимость консультации 100 евро.
25 Top_for_the_good 8959 9.12.2014, 22:23
автор: Top_for_the_good


 



RSS Текстовая версия Сейчас: 29.3.2024, 18:16
Дизайн