剥离phpbb bbcode

use*_*379 2 php regex phpbb phpbb3

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

[quote="SimonLeBon":3pwalcod]bladie bla bla[/quote:3pwalcod]bla bla bladie bla blaffsd
fsdjhgfd dgfgdffgdfg
Run Code Online (Sandbox Code Playgroud)

剥离bbcodes我使用我通过谷歌找到的功能,我已经尝试了几个其他类似的功能以及:

 <?php
function stripBBCode($text_to_search) {
     $pattern = '|[[\/\!]*?[^\[\]]*?]|si';
     $replace = '';
     return preg_replace($pattern, $replace, $text_to_search);
}
?>
Run Code Online (Sandbox Code Playgroud)

然而,这并没有任何影响.

ale*_*lex 5

这将剥离bbcode,这是有效的(即打开与标签匹配的标签).

$str = preg_replace('/\[(\w+)=.*?:(.*?)\](.*?)\[\/\1:\2\]/', '$3', $str);
Run Code Online (Sandbox Code Playgroud)

CodePad.

可重复使用的功能

function stripBBCode($str) {
   return preg_replace('/\[(\w+)=.*?:(.*?)\](.*?)\[\/\1:\2\]/', '$3', $str);
}
Run Code Online (Sandbox Code Playgroud)

说明

  1. \[匹配文字[.
  2. (\w+)匹配1个或多个单词字符并保存在捕获组中1.
  3. =匹配文字=.
  4. .*?不合理地匹配除和\n之间的每个字符.=:
  5. :匹配文字:.
  6. (.*?)不合理地匹配除了和\n之间的每个字符并保存在捕获组中.:]2
  7. \]匹配文字].
  8. (.*?)不合理地匹配除了和\n之间的每个字符并保存在捕获组中.:]3
  9. \[匹配文字[.
  10. /\1\2 再次匹配以前的捕获组.
  11. \]匹配文字].