Preg php русские символы

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

Для работы с ними нужно использовать модификатор /u поисковой маски, который указывает на поиск unicode.

u (PCRE_UTF8)
Этот модификатор включает дополнительную функциональность PCRE, которая не совместима с Perl: шаблон и целевая строка обрабатываются как UTF-8 строки. Модификатор u доступен в PHP 4.1.0 и выше для Unix-платформ, и в PHP 4.2.3 и выше для Windows платформ. Валидность UTF-8 в шаблоне и целевой строке проверяется начиная с PHP 4.3.5. Недопустимая целевая строка приводит к тому, что функции preg_* ничего не находят, а неправильный шаблон приводит к ошибке уровня E_WARNING. Пятый и шестой октеты UTF-8 последовательности рассматриваются недопустимыми с PHP 5.3.4 (согласно PCRE 7.3 2007-08-28); ранее они считались допустимыми.

Похожие записи

Отладка PHP в Visual Studio Code и OpenServer

Visual Studio Code — отличный бесплатный редактор кода, который в определенных ситуациях, заменяет IDE. В частности VS Code можно использовать как альтернативу PHPStorm. По умолчанию, VS Code предоставляет статический анализатор кода. В этом посте показана настройка отладчика PHP для Visual Studio Code в среде с набором инструментов разработчика OpenServer.

Создание объектов PHP в стиле JS литеральной нотации

В JavaScript объекты можно создавать несколькими способами, основные: оператор new и литеральная нотация. В статье рассказывается как в PHP создавать объекты в стиле JavaScript литеральной нотации.

Читайте также:  Javascript добавить метод объекту

Об автозагрузке в PHP

Статья раскрывает аспекты автозагрузки в PHP с использованием __autoload, spl_autoload_register, автозагрузки через composer (PSR-4) с небольшим экскурсом в историю.

Плагины VS Code для разработки на PHP

PHP Debug — отладка, PHP Intelephense — автозавершение кода, PHP DocBlocker — документирование кода.

PHP наследование массива-свойства

phpDocumentor на Ubuntu

Запись об установке и использовании phpDocumentor — системе документирования исходных текстов на PHP.

© 2017-2020 — Александр Ветров

Источник

Русский язык и регулярные выражения в PHP

Русский язык и регулярные выражения в PHP

Регулярные выражения — важнейшая составляющая большинства языков программирования. В PHP они так же очень нужны, особенно для написания парсеров. Однако, с ними есть одна серьёзная проблема — регулярные выражения в PHP плохо работают с русским языком. Давайте разберём эту проблему подробнее, а после я Вам покажу простое решение подружить регулярные выражения и русский язык.

Разберём следующие регулярные выражения:

echo preg_match(«/и/i», «И»); // Возвращает false вместо true
echo preg_match(«/[а-я]/», «И»); // Возвращает true вместо false
echo preg_match(«/[а-я]/i», «И»); // Работает правильно
?>

Как видите, работают регулярные выражения с русскими символами весьма странно. Решить быстро эти проблемы позволяет модификатор u:

echo preg_match(«/и/ui», «И»); // Работает правильно
echo preg_match(«/[а-я]/u», «И»); // Работает правильно
echo preg_match(«/[а-я]/ui», «И»); // Работает правильно
?>

Вывод, который Вы должны сделать из этой статье следующий: если в регулярных выражениях используются русские символы, то надо всегда ставить модификатор u, чтобы после не искать ошибку там, где её нет. Когда-то я провозился больше часа, пытаясь понять, почему русский текст не проходит регулярное выражение, пока не нашёл этого простого решения.

Создано 01.11.2013 16:13:03

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 1 ):

    Михаил, напишите серию статей про canvas !

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.

    Источник

    PHP. Кириллица в регулярных выражениях

    Author

    Автор: Роман Чернышов Опубликовано: 13 ноября 2010

    регулярные выражения

    Столкнулся я с проблемой, а именно сайт не в какую не хотел поддерживать русские пароли. При регистрации пользователь в качестве пароля мог использовать только цифры и латинские буквы. Но для рунета также актуальна поддержка паролей с использованием кириллицы. Преимущества в том, что такой пароль пользователь легче запоминает, а также более высокая безопасность, на тот случай если его попытаются подобрать. Например китайские хакеры)).

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

    Перед регулярным выражением в скрипте следует указать локаль, делается это написанием следующей команды (если используется кодировка UTF-8, если CP1251 то пишем её):

    далее само регулярное выражение с ключем \u, чтобы обработчик знал, что в вырожении используются национальные символы.

    Таким образом мы научили регулярные выражения дружить с кириллицей. Если есть какие-то дополнения то пожалуйста пишите.

    CategoryPHP Tags

    Похожие записи

    4 комментария to “PHP. Кириллица в регулярных выражениях”

    Не вырезает согласно шаблону прочие символы, типа знака вопроса и т.д. Если убрать ключ \u, то вырезает, но не дружит с кириллицей…

    Была похожая задача с кириллицей, только на проверку русских символов в слове без цифр, то бишь слово должно быть написано ТОЛЬКО русскими буквами.
    Писать через setlocale(LC_ALL, «ru_RU.UTF-8»); порой не вариант — не каждый сервак работает с кириллицей (как и в моем случае тоже). Поэтому решил обойти другим способом через 2 функции. Может кому то понадобится — буду рад function translitArray() < $arr = array(«А» =>«A», «Б» => «B», «В» => «V», «Г» => «G», «Д» => «D»,
    «Е» => «E», «Ё» => «YO», «Ж» => «ZH»,
    «З» => «Z», «И» => «I», «Й» => «J», «К» => «K», «Л» => «L»,
    «М» => «M», «Н» => «N», «О» => «O», «П» => «P», «Р» => «R»,
    «С» => «S», «Т» => «T», «У» => «U», «Ф» => «F», «Х» => «X»,
    «Ц» => «C», «Ч» => «CH», «Ш» => «SH», «Щ» => «SHH», «Ъ» => «‘»,
    «Ы» => «Y», «Ь» => «», «Э» => «E», «Ю» => «YU», «Я» => «YA»,
    «а» => «a», «б» => «b», «в» => «v», «г» => «g», «д» => «d»,
    «е» => «e», «ё» => «yo», «ж» => «zh»,
    «з» => «z», «и» => «i», «й» => «j», «к» => «k», «л» => «l»,
    «м» => «m», «н» => «n», «о» => «o», «п» => «p», «р» => «r»,
    «с» => «s», «т» => «t», «у» => «u», «ф» => «f», «х» => «x»,
    «ц» => «c», «ч» => «ch», «ш» => «sh», «щ» => «shh», «ъ» => «»,
    «ы» => «y», «ь» => «», «э» => «e», «ю» => «yu», «я» => «ya»,); return $arr;
    > function checkTownName($town_name) $town_name = str_replace(» «, «», $town_name);
    $town_length = mb_strlen($town_name);
    str_replace($tArr, «», $town_name, $town_check_length);
    return $town_check_length==$town_length;
    > Соль в том, что кол-во замен должно равняться кол-ву символов в слове

    Источник

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

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

    Итак, как мы помним из предыдущих уроков, есть метасимвол \w, совпадающий с буквами, цифрами и символом подчеркивания. Однако в данном случае он не подойдет, поскольку совпадает он только с латинницей, не с кириллицей.

    Как видим, этот шаблон действительно не подходит. Для поиска кириллицы мы должны использовать символьный класс — [], в котором укажем диапазон кириллических букв от а до я.

    Онлайн курс «PHP-разработчик»

    Изучите курс и создайте полноценный проект — облачное хранилище файлов

    С нуля освоите язык программирования PHP, структурируете имеющиеся знания, а эксперты помогут разобраться с трудными для понимания темами, попрактикуетесь на реальных задачах. Напишете первый проект для портфолио.

    Этот шаблон регулярного выражения уже лучше. Но все еще есть нюансы — не найдена буква ё. Эта буква в регулярных выражениях не входит в диапазон а-я и ее нужно указывать отдельно.

    Вот теперь все отлично. Все кириллические буквы найдены. Однако шаблон мы тестировали в реализации регулярных выражений для JavaScript. Давайте попробуем протестировать его в PHP скрипте. Обратите внимание, я использую версию PHP 5.4 (в версиях ниже может быть другой результат). Также еще один нюанс — мы используем кодировку windows-1251 (в следующей статье мы узнаем нюансы работы с кодировкой utf-8).

    Итак, скрипт ниже даст результат, который вы увидите на следующем скриншоте:

    Источник

    Оцените статью