Preg_replace BBCode链接

Iva*_*ova 3 php bbcode preg-replace

我有这个bbcode:

[url=http://www.youtube.com/watch?v=h1bIEK1h150]If I offer you my soul[/url]
Run Code Online (Sandbox Code Playgroud)

例如.我怎么能把它变成这个:

<a href="http://www.youtube.com/watch?v=h1bIEK1h150" target="_blank">If I offer you my soul</a>
Run Code Online (Sandbox Code Playgroud)

小智 5

你需要一个正则表达式.考虑到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);
Run Code Online (Sandbox Code Playgroud)

此外,如果您从PHPBB解析bbcode,它可以有一个唯一的用户标识符:

$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);
Run Code Online (Sandbox Code Playgroud)