Русский язык и регулярные выражения в PHP
Регулярные выражения - важнейшая составляющая большинства языков программирования. В PHP они так же очень нужны, особенно для написания парсеров. Однако, с ними есть одна серьёзная проблема - регулярные выражения в PHP плохо работают с русским языком. Давайте разберём эту проблему подробнее, а после я Вам покажу простое решение подружить регулярные выражения и русский язык.
Разберём следующие регулярные выражения:
<?php
echo preg_match("/и/i", "И"); // Возвращает false вместо true
echo preg_match("/[а-я]/", "И"); // Возвращает true вместо false
echo preg_match("/[а-я]/i", "И"); // Работает правильно
?>
Как видите, работают регулярные выражения с русскими символами весьма странно. Решить быстро эти проблемы позволяет модификатор u:
<?php
echo preg_match("/и/ui", "И"); // Работает правильно
echo preg_match("/[а-я]/u", "И"); // Работает правильно
echo preg_match("/[а-я]/ui", "И"); // Работает правильно
?>
Вывод, который Вы должны сделать из этой статье следующий: если в регулярных выражениях используются русские символы, то надо всегда ставить модификатор u, чтобы после не искать ошибку там, где её нет. Когда-то я провозился больше часа, пытаясь понять, почему русский текст не проходит регулярное выражение, пока не нашёл этого простого решения.
-
- Михаил Русаков
Комментарии (1):
Михаил, напишите серию статей про canvas !
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.