очистить документ BBcode

Скажем, у меня есть документ типа:

 [b]blah[/b]
 [img]Thisismyimage.png[/img]

Как я могу сделать так, чтобы я полностью удалил все теги BBcode. А также удалите весь текст между тегами [img].

Если это вообще поможет, я использую плату IPB. Однако, если кто-то знает способ легко разобрать BBcode, это было бы здорово, я вполне доволен тем, что просто удалил его.


person endy    schedule 07.06.2011    source источник


Ответы (1)


Парсинг BBcode — это практически решаемая задача: http://pear.php.net/package/HTML_BBCodeParser - И это также был бы более целесообразный путь для удаления (для простоты просто примените strip_tags() впоследствии).

Но для удаления ограниченного набора синтаксических конструкций можно использовать очень простое регулярное выражение:

 $text = preg_replace('#\[img].*?\[/img]|\[/?\w+.*?]#', '', $text);
person mario    schedule 07.06.2011
comment
Разбор BBcode не так прост, учитывая, что я разрабатываю на плате IPB. Однако preg_replace идеален. Есть ли способ использовать preg replace, чтобы просто удалить весь bbcode? - person endy; 07.06.2011
comment
В этом примере должны быть удалены все теги bbcode в единственном числе, а также один специальный случай [img]. Например, он не удалит теги bbcode с атрибутами [xy a=b]. Вам придется попробовать, если это можно использовать в вашем случае. - person mario; 07.06.2011
comment
Я буду честен, я действительно не могу понять регулярные выражения. Я был бы БОЛЬШОЕ признателен, если бы вы могли предоставить и пример того, как также удалить теги кода bb, у которых есть атрибуты. - person endy; 07.06.2011
comment
Я добавил еще один универсальный .*? для необязательных атрибутов bbcode. Это не очень профессиональный подход (может быть более точным), но я не знаю вашего фактического используемого синтаксиса bbcode. Это может быть проблематично, если в тексте есть ложные квадратные скобки. Остальное стоит попробовать. - person mario; 07.06.2011