2014-01-04 2 views
0

Я использую эту функцию для удаления BBCode из строки;Удалить BBCode From String

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

Но он не работает, считая меня нубом регулярного выражения. Пожалуйста, помогите! :(

+1

'На вопрос 52 секунд назад, ответил на 10 секунд ago.' -_- –

+2

@Shankar Дамодарана: Ее вопрос времени, я был в тот момент свободен;) –

ответ

2

Вы отсутствуете соответствующий ^

Попробуйте это;.

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

Моими плохо, спасибо ИМР Омер – user2854563

1

Сначала на всех, пожалуйста, выберите другую разделители, чем | (так как это один из худшего возможного выбора)

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

удалит все содержимое внутри квадратных скобок.

Детали:

~  # delimiter 
\[  # literal [ 
[^]]+ # all characters except ] 
]  # literal ] 
~  # delimiter 

модификатор s является использование меньше, так как шаблон не использует точку. Модификатор i бесполезен, так как шаблон не использует буквы.

+0

Благодаря Casmir, вы тоже , +1 для вас – user2854563