2012-03-15 90 views
3

我有这样的设置高亮:的preg_replace BB代码链接

[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> 
+1

+1对于您在问题中选择的视频和歌词。 – Jakar 2012-04-04 17:47:28

+1

我真的很喜欢Disturbed; p – 2012-04-12 08:49:44

+0

我认为我们还需要一个Tony-the-pony的答案来解答所有的BBcode问题。 [中心]不能成立。 – 2012-04-20 11:53:18

回答

5

你需要一个正则表达式。考虑到设置高亮可以有一个文本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); 
+0

工程就像一个魅力,谢谢! – 2012-03-15 19:26:52