2011-05-09 35 views
2

我在做一個網站和一個PHPBB3論壇。我希望發佈在論壇上的消息顯示在網站的主頁上。我已經得到了這個概念,除了bbcode解析是奇怪的(phpbb3在每個bbcode標記之後添加一個UID)和我的bbcode解析器不包括這個。由於每個帖子的UID不同,我試圖讓PHP代碼解析並通過MYSQL刪除它。在php中編輯字符串

$query = @mysql_query("SELECT * FROM phpbb_posts where forum_id = 2;") or die (mysql_error()); 
$uid = $row['bbcode_uid']; 
$content = $row['post_text']; 
$content = str_replace($uid, '', $content); 
$content = BBCode2html($content); 
echo $content; 

有沒有一種方法,我可以代替UID(設置高亮貌似[u:1h77z1wc]UNDERLINED[/u:1h77z1wc]代替[u]UNDERLINED[/u])?

回答

3

你可以用正則表達式替換...

preg_replace('/\[((\w+)(:\w+))](.*?)\[\/\1]/s', '[$2]$4[/$2]', $str); 
0

下面的正則表達式應該做的伎倆:

preg_replace('/\[(\/?[^:]+):[^\]]+\]/', '[$1]', $str);