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, см. выше.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 07:47
2000 руб./за проект
26 апр. 2024, в 06:46
1000 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект