Preg_replace BBCode Link

У меня есть этот 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);