首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >剥离phpbb bbcode

剥离phpbb bbcode
EN

Stack Overflow用户
提问于 2011-05-19 20:09:56
回答 4查看 2.3K关注 0票数 2

我想在我的网站上显示我的phpbb3论坛上的最新帖子,但没有bbcode。所以我试着去掉bbcode,但没有成功,例如,其中一个帖子可能是:

代码语言:javascript
复制
[quote="SimonLeBon":3pwalcod]bladie bla bla[/quote:3pwalcod]bla bla bladie bla blaffsd
fsdjhgfd dgfgdffgdfg

为了去掉bbcode,我使用了我通过google找到的函数,我也尝试了其他几个类似的函数:

代码语言:javascript
复制
 <?php
function stripBBCode($text_to_search) {
     $pattern = '|[[\/\!]*?[^\[\]]*?]|si';
     $replace = '';
     return preg_replace($pattern, $replace, $text_to_search);
}
?>

然而,这并没有真正起到任何作用。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-21 03:20:30

这是来自phpBB的一个(稍微调整为独立):

代码语言:javascript
复制
/**
* 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\*\+\-]+(?:=(?:&quot;.*&quot;|[^\]]*))?(?::[a-z])?(\:$uid)\]#", ' ', $text);

    $match = return array(
        '#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
        '#<!\-\- l \-\-><a (?:class="[\w-]+" )?href="(.*?)(?:(&amp;|\?)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);
}
票数 0
EN

Stack Overflow用户

发布于 2011-05-19 20:13:51

这将剥离有效的bbcode (即开始标记与结束标记匹配)。

代码语言:javascript
复制
$str = preg_replace('/\[(\w+)=.*?:(.*?)\](.*?)\[\/\1:\2\]/', '$3', $str);

CodePad

可重用函数

代码语言:javascript
复制
function stripBBCode($str) {
   return preg_replace('/\[(\w+)=.*?:(.*?)\](.*?)\[\/\1:\2\]/', '$3', $str);
}

解释

  1. \[匹配文字[.
  2. (\w+)匹配一个或多个单词字符并保存在捕获组1.
  3. =匹配文字=.
  4. .*?不贪婪匹配=:.
  5. :之间除\n以外的每个字符匹配文字:.
  6. (.*?)不贪婪匹配\n2之间除\n以外的每个字符并保存在捕获组]中。

H133<].

  1. (.*?) 3.
  2. \[匹配文字[.
  3. /\1\2匹配以前的捕获组again.
  4. \]匹配文字].

/code>\]匹配文字\n在:和]之间不贪婪地匹配除]以外的每个字符并保存在捕获组中

票数 5
EN

Stack Overflow用户

发布于 2012-12-21 04:28:30

为什么不使用内置在BBCode中的解析工具呢?

http://php.net/manual/en/book.bbcode.php

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6058397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档