Preg_replace BBCode Ссылка - PullRequest
       22

Preg_replace BBCode Ссылка

3 голосов
/ 15 марта 2012

У меня есть этот bbcode:

[url=http://www.youtube.com/watch?v=h1bIEK1h150]If I offer you my soul[/url]

например.Как я могу превратить это в это:

<a href="http://www.youtube.com/watch?v=h1bIEK1h150" target="_blank">If I offer you my soul</a>

1 Ответ

5 голосов
/ 15 марта 2012

Вам нужно регулярное выражение. Принимая во внимание, что bbcode может иметь текстовый URL или только URL, вам понадобятся два оператора:

$message = preg_replace('@\[url=([^]]*)\]([^[]*)\[/url\]@', '<a href="$1">$2</a>', $message);
$message = preg_replace('@\[url\]([^[]*)\[/url\]@', '<a href="$1">$1</a>', $message);

Кроме того, если вы анализируете bbcode из PHPBB, он может иметь уникальный идентификатор пользователя:

$uid = '[0-9a-z]{5,}';
$message = preg_replace('@\[url=([^]]*):'. $uid . '\]([^[]*)\[/url:'. $uid . '\]@', '<a href="$1">$2</a>', $message);
$message = preg_replace('@\[url:'.         $uid . '\]([^[]*)\[/url:'. $uid . '\]@', '<a href="$1">$1</a>', $message);
...