Регулярні вирази в PHP. Кирилиця

16

Від автора: вітаю вас, друзі. У цій статті ми з вами дізнаємося деяку специфіку роботи регулярних виразів з кирилицею взагалі і конкретно в PHP. Приступимо?

До цього, в попередніх статтях ми з вами використовували в якості тексту виключно латинницу, кирилиці ми уникали. Тепер давайте спробуємо знайти всі кириличні літери в рядку. У якості «піддослідного» ми використовуємо фразу, яка може бути знайома комусь зі шкільної лави: «Іван Народив Дівчинку, Наказав Тягти Пелюшку». Ця фраза була покликана допомогти запам’ятати відмінки в російській мові, оскільки перша буква кожного слова збігається з тим чи іншим падежем.

Отже, як ми пам’ятаємо з попередніх уроків, є метасимвол \w, збігається з літерами, цифрами і символом підкреслення. Однак у даному випадку він не підійде, оскільки він збігається тільки з латинницей, не з кирилицею.

Регулярні вирази в PHP. Кирилиця

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

Регулярні вирази в PHP. Кирилиця

Цей шаблон регулярного виразу вже краще. Але все ще є нюанси — не знайдена буква е. Ця буква в регулярних виразах не входить в діапазон а-я і її потрібно вказувати окремо.

Регулярні вирази в PHP. Кирилиця

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

Отже, скрипт нижче дасть результат, який ви побачите на наступному скріншоті: