Задать вопрос
@kalugga

Как выбрать все ссылки без ббкода?

Есть регулярное выражение:

$text = preg_replace("~(?<!\[url\])((http|https|ftp|ftps)://)([а-яА-Яa-zA-Z.\/0-9-+_?=&%\#;])+~siu", '[url]$0[/url]', $text);


Которое ищет все ссылки на странице без тэга [url][/url] и оборачивает их в код. Чтобы не оборачивать уже обёрнутую ссылку, добавлено отрицание тэга(?<!\[url\])

Проблема возникла с тэгами [url=ссылка]ссылка[/url]. Отрицание (?<!\[url\]) не помогает.

Как быть?
  • Вопрос задан
  • 104 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Хекслет
    Java-разработчик
    10 месяцев
    Далее
  • Хекслет
    Python-разработчик
    10 месяцев
    Далее
  • Учебный центр IBS
    RT-001 Эксплуатация RT.DataLake
    1 неделя
    Далее
Решения вопроса 1
А если просто запретить ] перед и [/url] после?

~(?<!\])((http|https|ftp|ftps)://)([а-яА-Яa-zA-Z.\/0-9-+_?=&%\#;])+(?!\[/url\])~siu
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@GhOsT_MZ
Ростов-на-Дону
А если нечто подобное? Только в разных ситуациях будет разный элемент массива...
\[url(=(.+))?\](.+)\[\/url\]
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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