Задать вопрос

Когда в регулярном выражении необходим флаг u?

В каких случаях нужен флаг u? Он необходим, когда шаблон содержит юникод символ, когда шаблон должен захватить юникод символы, когда провряемая строка содержит юникод символы? Нужно ли ставить флаг u, если в строке с юникод символами ищется не юникод символ? Например:
preg_match( '#abc\s+#u', $string );
или достаточно
preg_match( '#abc\s+#', $string );
  • Вопрос задан
  • 208 просмотров
Подписаться 3 Средний Комментировать
Решения вопроса 2
SagePtr
@SagePtr
Еда - это святое
В случае с ASCII-only символами в регулярке - нет смысла, т.к. в UTF-8 все символы с кодом < 128 кодируются ровно также, как и в однобайтной кодировке, а символы с кодами >= 128 кодируются последовательностью байт с кодами >= 128. Случайно пересечься между собой и быть ложно интерпретированы эти оба диапазона в UTF-8 не могут. К другим многобайтным кодировкам это не относится.
Ответ написан
Комментировать
Ответ на все вопросы - да. Если в строке есть или возможно появление отличных от ascii символов, безопаснее всего использовать флаг u.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы