PREG_REPLACE BBCode链接
我有这个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);
另外,如果您从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);
相关文章