Задать вопрос
gikami
@gikami
web программист

Как добавить условие в регулярное выражение «Есть ли до совпадения какие либо символы»?

Нужно сделать регулярное выражение, которое заменяет хештеги на ссылки.
Вот код который это делает:
$pattern = "/\#(\w+)/ui";
$text = preg_replace($pattern, '<a href="'.site_url().'?s=%23$1&bp_search=1&view=content" target="_blank">#$1</a>',$text);

Проблема в том, что например если добавить эмодзи у него будет код "& # x1f601 (Без пробелов, редактор не пропускает)" и регулярка заменяет данную строчку.
Как сделать условие чтобы проверяло, есть ли что-то до знака # (Кроме пробела) и если есть , то не добавлять ссылку.
  • Вопрос задан
  • 96 просмотров
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • OTUS
    PHP Developer. Professional
    5 месяцев
    Далее
Решения вопроса 1
Sergomen
@Sergomen
Просто делай добро и оно вернётся
Вот /(?<![&])(?:\B)#(\w+)/iu
https://regex101.com/r/0tnI4B/1 (флаг g поставил для наглядности)

P.s. если нужно то/(?<![&])#(\w+)/iu захватит "текст#тег" https://regex101.com/r/1PUO2t/1 (флаг g поставил для наглядности)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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