От автора: приветствую вас, друзья. В предыдущей статье мы с вами говорили о специфике работы регулярных выражений в PHP с кириллицей. Однако использовали мы при этом кодировку windows-1251. В этой статье мы уже будем работать с кодировкой utf-8 и используем функцию preg_match для поиска кириллицы в тексте. Начнем?
Итак, в прошлой статье мы с вами использовали в качестве подопытного кролика следующую строку текста: «Иван Родил Девчонку, Велел Тащить Пелёнку». И вот такое регулярное выражение:
1 |
$pattern = '#[А-Яа-яЁё]+#'; |
Этот шаблон вполне корректно работал с текстом в кодировке windows-1251, то есть с однобайтовой кодировкой. Сейчас эта кодировка используется все реже и реже. Практически стандартом стала кодировка utf-8. Давайте используем ее:

Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать веб-приложение на PHP с полного нуля
Получить курс сейчас!
1 2 3 4 5 6 7 8 |
<?php header("Content-type: text/html; charset=utf-8"); $str = 'Иван Родил Девчонку, Велел Тащить Пелёнку'; $pattern = '#[А-Яа-яЁё]+#'; preg_match_all($pattern, $str, $matches); print_r($matches); |
Посмотрим на результат:
Упс, что-то не то. Почему так? Дело в том, что регулярные выражения по умолчанию работают с однобайтовой кодировкой. Кодировка же utf-8 — многобайтная. Для того, чтобы все работало корректно, необходимо всего лишь использовать специальный модификатор — u, который переводит шаблон регулярного выражения в режим совместимости с юникодом.
1 |
$pattern = '#[А-Яа-яЁё]+#u'; |
Вот теперь все работает корректно:
Как видим, все достаточно просто. Не забывайте об этом модификаторе и регулярные выражения будут правильно работать с юникодом. Стоит отметить, что этот модификатор присущ PHP. В JavaScript, к примеру, такого модификатора нет и регулярные выражения будут корректно работать с текстом в любом случае.
На этом мы будем завершать сегодняшнюю статью. Больше о регулярных выражениях вы можете узнать из нашего курса по регулярным выражениям. Удачи!

Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать веб-приложение на PHP с полного нуля
Получить курс сейчас!
Хотите изучить регулярные выражения на PHP?
Посмотрите 12-ти часовой видео курс по регулярным выражениям на PHP!
Смотреть