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

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

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

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

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

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

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

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

Бесплатный курс по PHP программированию

Освойте курс и создайте динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

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

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

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

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

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

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

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

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

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

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

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

Бесплатный курс по PHP программированию

Освойте курс и создайте динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Хотите изучить регулярные выражения на PHP?

Прямо сейчас посмотрите 12-ти часовой курс по регулярным выражениям на PHP!

Смотреть курс

Метки:

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

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

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Я не робот.

Spam Protection by WP-SpamFree