如何在字符串中获取所有BB代码但保留内容?
示例:
[B]This is bold[/B] and This is [color=#FFCCCC]colored[/color]
将是:
这是粗体,这是彩色的
答案 0 :(得分:19)
我想您可以使用正则表达式和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
这里,我使用的模式是匹配:
[
个字符:\[
]
字符的内容:[^\]]
[^\]]+
]
字符:\]
请注意[
和]
具有特殊含义 - 这意味着当您希望对它们进行字面解释时,必须将它们转义。
答案 1 :(得分:0)
我是从this source找到的。所有功劳归于作者ShEx。
function stripBBCode($text_to_search) {
$pattern = '|[[\/\!]*?[^\[\]]*?]|si';
$replace = '';
return preg_replace($pattern, $replace, $text_to_search);
}
echo stripBBCode($text_to_search);
我已经测试过它确实有效。