在php中编辑字符串

时间:2011-05-09 02:07:06

标签: php mysql regex

我正在建立一个网站和一个PHPBB3论坛。我希望论坛上发布的消息显示在网站的主页上。我已经得到了这个概念,除了bbcode解析很奇怪(phpbb3在每个bbcode标签后添加一个UID),而我的bbcode解析器不包括这个。由于每个帖子的UID不同,我试图通过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(bbcode看起来像[u:1h77z1wc]UNDERLINED[/u:1h77z1wc]而不是[u]UNDERLINED[/u])?

2 个答案:

答案 0 :(得分:3)

你可以用正则表达式替换它......

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

答案 1 :(得分:0)

以下正则表达式应该可以解决这个问题:

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