我正在使用此函数从字符串中删除BBCode;
function remove_bbcode($string)
{
$pattern = '|[[\/\!]*?[\[\]]*?]|si';
$replace = '';
return preg_replace($pattern, $replace, $string);
}
但它没有用,考虑我作为正则表达式的菜鸟请帮忙! :(
答案 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
修饰符也没用,因为模式不使用字母。