У меня есть этот 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>
Вам нужно регулярное выражение. Принимая во внимание, что 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);