php - 剥离 phpbb bbcode

标签 php regex phpbb phpbb3

我想在我的网站上显示 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);
}

说明

  1. \[ 匹配文字 [
  2. (\w+) 匹配 1 个或多个单词字符并保存在捕获组 1 中。
  3. = 匹配文字 =
  4. .*? 贪婪地匹配 =: 之间除 \n 之外的所有字符。
  5. : 匹配文字 :
  6. (.*?) 贪婪地匹配 :] 之间除 \n 之外的所有字符,并保存在捕获组2
  7. \] 匹配文字 ]
  8. (.*?) 贪婪地匹配 :] 之间除 \n 之外的所有字符,并保存在捕获组3
  9. \[ 匹配文字 [
  10. /\1\2 再次匹配之前的捕获组。
  11. \] 匹配文字 ]

关于php - 剥离 phpbb bbcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6058397/

相关文章:

mysql - 操作数应包含 1 列

amazon-web-services - 在 PHPbb3 上配置 Amazon SES

php - 如何增加mysql中的默认值

PHP 和联系表格

c# - 使用 C# 将 HashSet 中的一组正则表达式与 ASP.NET 中的字符串进行匹配的最佳方法是什么?

regex - 在 sed 中使用 _ .*_ 和 &_

php - 将新数据添加到mysql中的旧数据中

php - 创建一个数组并将选定的值存储为键和值

regex - 否定正则表达式中的特定组

hyperlink - 尝试从 phpBB 中访问的链接中删除下划线