Регулярные выражения кириллица PHP и оригинальная личность

Регулярные выражения кириллица PHP

От автора: иногда среди серости будней встречаются оригинальные личности, заряжающие тебя позитивом на целую неделю. Вот на днях встретил одного разработчика, который трактует себя «русофилом». Этот от него я узнал, что регулярные выражения кириллица PHP – вполне совместимые вещи.

Зачем русский язык?

Когда-то я уже говорил, что регулярные выражения чаще всего применяются в различных типах веб-форм. В данной ситуации мы обратим свой «взор» на регистрационные формы и реализацию поддержки ими значений на русском.

Кстати, упомянутый выше «персонаж» во всех своих проектах реализует поддержку ввода кириллицы (в том числе и в формах). По его мнению, российские пользователи должны писать только на русском. Конечно, звучит немного радикально, но прок от этого тоже есть.

В PHP регулярных выражениях поддержка русских букв желательна. Таким образом вы немного улучшаете UX сайта и повышаете уровень безопасности.

Дело в том, что пароли на кириллице (по мнению многих экспертов) обладают большей степенью защищенности. И все благодаря тому, что зарубежным злоумышленникам очень трудно понять смысловую взаимосвязь русских символов, используемых в них. Это я опять привожу высказывание своего знакомого «русофила-программиста» :).

Частая проблема русификации форм

Теперь рассмотрим частую проблему, встречающуюся в PHP c русскими буквами. Регулярные выражения, в которых используются не классы символов, будут исправно работать с кириллическими значениями. Например:

Регулярные выражения кириллица PHP

Да какие тут проблемы! Все и так работает нормально! К сожалению, не все так гладко с часто употребляемой функцией для операций с «регулярками» preg_match (). В качестве доказательства применим шаблон, созданный с помощью символьных классов:

В Денвере этот пример будет работать нормально, но на других «нелокальных» серваках – не факт. Поэтому на специализированных форумах часто можно встретить вопросы разработчиков, столкнувшихся с этой проблемой. Тут может быть несколько вариантов ее решения:

Прописка локали с помощью функции setlocale(), в параметрах которой также указывается кодировка русских букв в PHP:

Регулярные выражения кириллица PHP

Указания модификатора для шаблона u. Но это работает не всегда, поскольку его использование несовместимо с синтаксисом Perl. В результате скрипт отработает неправильно, так как обе строки «воспринимаются» функцией preg_match() в формате UTF-8. Поэтому еще и warning вдогонку :).

Регулярные выражения кириллица PHP

Если дальше капнуть, то многие советуют указывать вместо u модификатор U. Но это разные модификаторы. Например, последний призван бороться с «жадностью» регулярок. Больше об этом написано в документации языка. Это также стоит учитывать при поиске с помощью PHP русских букв в URL.

Думаю, сегодня мой знакомый порадуется. За продвижение русского языка он обещал мне три литра пива выставить. Но так как знает, что я его не пью, также пообещал выпить их за меня. Исконно русская черта характера :).

Метки:

Похожие статьи:

Комментарии Вконтакте: