我想在我的网站上显示 phpbb3 论坛的最新帖子,但没有 bbcode。 所以我试图去掉 bbcode 但没有成功 例如,其中一篇文章可能是:
[quote="SimonLeBon":3pwalcod]bladie bla bla[/quote:3pwalcod]bla bla bladie bla blaffsd
fsdjhgfd dgfgdffgdfg
为了剥离 bbcodes,我使用了通过谷歌找到的函数,我也尝试了其他几个类似的函数:
<?php
function stripBBCode($text_to_search) {
$pattern = '|[[\/\!]*?[^\[\]]*?]|si';
$replace = '';
return preg_replace($pattern, $replace, $text_to_search);
}
?>
但这并没有真正产生任何效果。
最佳答案
这将剥离有效的 bbcode(即开始标记与结束标记匹配)。
$str = preg_replace('/\[(\w+)=.*?:(.*?)\](.*?)\[\/\1:\2\]/', '$3', $str);
CodePad .
可重用函数
function stripBBCode($str) {
return preg_replace('/\[(\w+)=.*?:(.*?)\](.*?)\[\/\1:\2\]/', '$3', $str);
}
说明
\[
匹配文字[
。(\w+)
匹配 1 个或多个单词字符并保存在捕获组1
中。=
匹配文字=
。.*?
贪婪地匹配=
和:
之间除\n
之外的所有字符。:
匹配文字:
。(.*?)
贪婪地匹配:
和]
之间除\n
之外的所有字符,并保存在捕获组2
。\]
匹配文字]
。(.*?)
贪婪地匹配:
和]
之间除\n
之外的所有字符,并保存在捕获组3
。\[
匹配文字[
。/\1\2
再次匹配之前的捕获组。\]
匹配文字]
。
关于php - 剥离 phpbb bbcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6058397/