5

如何在字符串中获取所有 BBcodes 但保留内容?

例子:

[B]This is bold[/B] and This is [color=#FFCCCC]colored[/color]

将会 :

这是粗体 这是彩色的

4

2 回答 2

21

我想您可以只使用正则表达式和函数来替换空字符串preg_replace之间的所有内容:[]

$str = '[B]This is bold[/B] and This is [color=#FFCCCC]colored[/color]';
echo preg_replace('#\[[^\]]+\]#', '', $str);

将显示:

This is bold and This is colored


在这里,我使用的模式是匹配的:

  • 一个[字符:\[
  • 任何不是]字符的东西:[^\]]
    • 一次或多次:[^\]]+
  • 和一个]字符:\]

请注意,[and]有一个特殊的含义——这意味着当您希望它们按字面意思解释时,您必须转义它们。

于 2010-04-15T20:30:29.857 回答
0

我从这个来源找到了这个。所有功劳归于作者ShEx

function stripBBCode($text_to_search) {
    $pattern = '|[[\/\!]*?[^\[\]]*?]|si';
    $replace = '';
    return preg_replace($pattern, $replace, $text_to_search);
    }

echo stripBBCode($text_to_search);

我已经测试过了,它确实有效。

于 2010-04-15T20:33:31.377 回答