PHP Заменить URL в строке тегом Anchor - PullRequest
1 голос
/ 09 апреля 2020

Я пытаюсь разобрать строку, содержащую ссылки в ней. Я рад указать формат, в котором они встречаются, однако обычные теги HTML удаляются при передаче.

Я предлагаю следующий формат:

[url=https://test.com]my link[/url]

становится:

<a href="https://test.com" target="_blank">my link</a>

без других необходимых атрибутов.

У меня есть следующая замена preg, но она не работает

$result = preg_replace("/\[\burl\b=[1-9a-zA-Z:\.\-\/_]*?[\]]*?\[\/\burl\b\]/", "<a href='$1' target='_blank'>$2</a>", $str);

Как только я пытаюсь получить ссылка / текст при построении регулярного выражения Я падаю.

Любая помощь / упрощение / другие идеи очень ценятся!

1 Ответ

1 голос
/ 09 апреля 2020

Вы можете рассмотреть возможность использования

preg_replace('~\[url=([^][\s]+)](.*?)\[/url]~s', "<a href='$1' target='_blank'>$2</a>", $text)

См. PHP demo и regex demo .

Подробности

  • \[url= - подстрока [url=
  • ([^][\s]+) - Группа 1 ($1): любой 1 или более символов, кроме [, ] и пробел
  • ] - ] char
  • (.*?) - Группа 2 ($2): любой ноль или более символов, как можно меньше
  • \[/url] - подстрока [/url].
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...