BarnyBroken
@BarnyBroken
Дизайнер, веб-разработчик.

Как обработать кириллические хештеги?

Здравствуйте.

Подскажите пожалуйста, как обработать кириллические хештеги ?
Сейчас у меня паттерн '%(\A#(\w|(\p{L}\p{M}?)|-)+\b)|((?<=\s)#(\w|(\p{L}\p{M}?)|-)+\b)|((?<=\[)#.+?(?=\]))%u'.

Поиск хештегов проводится через preg_match("/(#\w+)/", $text).

Обрабатываются все английские хештеги, но на кириллице ничего. Помогите создать паттерн и на кириллицу пожалуйста.
Заранее благодарен.
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
be_a_dancer
@be_a_dancer
Backend/Fullstack Developer
Почему в preg_match нет флага /u? Он будет кириллицу игнорировать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Flying
Есть официальная библиотека от Twitter которая, в частности, предоставляет функциональность экстракции хэштегов (пример для JS).

Если смотреть в код то там будет видно что реальный regexp формируется из кусков и его суммарный финальный размер весьма велик (думаю несколько кб). Кроме того есть ещё одна проблема, уже специфическая для PHP - библиотека PCRE, используемая как движок регулярных выражений для PHP не поддерживает Unicode Surrogates, выдавая для них ошибку Error 73 disallowed Unicode code point.

Я в своё время для одного проекта конвертировал реализацию из библиотеки Twitter для PHP, если нужно - можно забрать здесь. Там правда есть небольшое отличие в обработке mentions т.к. нужно было учесть специфику Instagram, ну и то что касается специфики работы PCRE, см. выше.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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