PHP: Como faço para remover tags aninhadas e realocá-las de maneira não aninhad

Preciso remover todas as ocorrências de uma tag de estilo bb de uma string. As tags podem ser aninhadas e é aqui que estou falhando. Também preciso realocar cada tag e conteúdo para o final da string e substituir a tag por um elemento HTML. Eu tentei jogar com regex e preg_replace_callback, mas até agora não obtive sucesso. Também tentei modificar o seguinte e também não tive sorte:Removendo bbcode aninhado (aspas) em PHP eComo posso remover um elemento html e seu conteúdo usando RegEx Acho que não posso usar um analisador de HTMLcomo iss porque o HTML está mal formado (filhos em elementos que não podem ter filhos

Aqui está a aparência da string:

This is some 
[tag] attribute=1 attribute2=1 
     [tag] attribute=1 attribute2=1 [/tag] 
     [tag] attribute=1 attribute2=1 [/tag]
[/tag]
 text.

O resultado deve ficar assim:

This is some text.
<br attribute=1 attribute2=1>
<br attribute=1 attribute2=1>
<br attribute=1 attribute2=1>

Qualquer ajuda seria apreciada

questionAnswers(1)

yourAnswerToTheQuestion