从字符串中删除BBCode

时间:2014-01-04 10:08:37

标签: php regex bbcode

我正在使用此函数从字符串中删除BBCode;

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

但它没有用,考虑我作为正则表达式的菜鸟请帮忙! :(

2 个答案:

答案 0 :(得分:3)

您错过了匹配的^

试试这个;

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

答案 1 :(得分:1)

首先,请选择除|之外的其他分隔符(因为它是最糟糕的选择之一)。

$pattern = '~\[[^]]+]~';

将删除方括号内的所有内容。

详细说明:

~       # delimiter
\[      # literal [
[^]]+   # all characters except ] 
]       # literal ]
~       # delimiter
由于模式不使用点,因此s修饰符使用较少。 i修饰符也没用,因为模式不使用字母。