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

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

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

Войти через центр авторизации
Похожие вопросы