我想在我的网站上显示我的phpbb3论坛上的最新帖子,但没有bbcode。所以我试着去掉bbcode,但没有成功,例如,其中一个帖子可能是:
[quote="SimonLeBon":3pwalcod]bladie bla bla[/quote:3pwalcod]bla bla bladie bla blaffsd
fsdjhgfd dgfgdffgdfg为了去掉bbcode,我使用了我通过google找到的函数,我也尝试了其他几个类似的函数:
<?php
function stripBBCode($text_to_search) {
$pattern = '|[[\/\!]*?[^\[\]]*?]|si';
$replace = '';
return preg_replace($pattern, $replace, $text_to_search);
}
?>然而,这并没有真正起到任何作用。
发布于 2011-05-21 03:20:30
这是来自phpBB的一个(稍微调整为独立):
/**
* Strips all bbcode from a text and returns the plain content
*/
function strip_bbcode(&$text, $uid = '')
{
if (!$uid)
{
$uid = '[0-9a-z]{5,}';
}
$text = preg_replace("#\[\/?[a-z0-9\*\+\-]+(?:=(?:".*"|[^\]]*))?(?::[a-z])?(\:$uid)\]#", ' ', $text);
$match = return array(
'#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
'#<!\-\- l \-\-><a (?:class="[\w-]+" )?href="(.*?)(?:(&|\?)sid=[0-9a-f]{32})?">.*?</a><!\-\- l \-\->#',
'#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" )?href="(.*?)">.*?</a><!\-\- \1 \-\->#',
'#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
'#<!\-\- .*? \-\->#s',
'#<.*?>#s',
);
$replace = array('\1', '\1', '\2', '\1', '', '');
$text = preg_replace($match, $replace, $text);
}发布于 2011-05-19 20:13:51
这将剥离有效的bbcode (即开始标记与结束标记匹配)。
$str = preg_replace('/\[(\w+)=.*?:(.*?)\](.*?)\[\/\1:\2\]/', '$3', $str);CodePad。
可重用函数
function stripBBCode($str) {
return preg_replace('/\[(\w+)=.*?:(.*?)\](.*?)\[\/\1:\2\]/', '$3', $str);
}解释
\[匹配文字[.(\w+)匹配一个或多个单词字符并保存在捕获组1.=匹配文字=..*?不贪婪匹配=和:.:之间除\n以外的每个字符匹配文字:.(.*?)不贪婪匹配\n和2之间除\n以外的每个字符并保存在捕获组]中。H133<].
(.*?) 3.\[匹配文字[./\1\2匹配以前的捕获组again.\]匹配文字]. /code>\]匹配文字\n在:和]之间不贪婪地匹配除]以外的每个字符并保存在捕获组中
发布于 2012-12-21 04:28:30
为什么不使用内置在BBCode中的解析工具呢?
http://php.net/manual/en/book.bbcode.php
https://stackoverflow.com/questions/6058397
复制相似问题