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 (Без пробелов, редактор не пропускает)" и регулярка заменяет данную строчку.
Как сделать условие чтобы проверяло, есть ли что-то до знака # (Кроме пробела) и если есть , то не добавлять ссылку.
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
Sergomen
@Sergomen
Просто делай добро и оно вернётся
Вот /(?<![&])(?:\B)#(\w+)/iu
https://regex101.com/r/0tnI4B/1 (флаг g поставил для наглядности)

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

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

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