Задать вопрос
BarnyBroken
@BarnyBroken
Дизайнер, веб-разработчик.

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

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

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

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

Обрабатываются все английские хештеги, но на кириллице ничего. Помогите создать паттерн и на кириллицу пожалуйста.
Заранее благодарен.
  • Вопрос задан
  • 82 просмотра
Подписаться 1 Простой 4 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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, см. выше.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽