Preg_replace BBCode Link

Tengo este código bb:

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

por ejemplo. ¿Cómo puedo convertir esto en esto?

 If I offer you my soul 

Necesitas una expresión regular. Teniendo en cuenta que bbcode puede tener una URL de texto o solo la URL, necesitará dos declaraciones:

 $message = preg_replace('@\[url=([^]]*)\]([^[]*)\[/url\]@', '$2', $message); $message = preg_replace('@\[url\]([^[]*)\[/url\]@', 'https://stackoverflow.com/questions/9726369/preg-replace-bbcode-link/$1', $message); 

Además, si está analizando bbcode desde PHPBB, puede tener un identificador de usuario único:

 $uid = '[0-9a-z]{5,}'; $message = preg_replace('@\[url=([^]]*):'. $uid . '\]([^[]*)\[/url:'. $uid . '\]@', '$2', $message); $message = preg_replace('@\[url:'. $uid . '\]([^[]*)\[/url:'. $uid . '\]@', 'https://stackoverflow.com/questions/9726369/preg-replace-bbcode-link/$1', $message);