utilizzo questa funzioncina per i bbcode

codice:
function bbcode($testo) {

$bb_prima = @array(
'/\[quote\](.*?)\[\/quote\]/is'
);

$bb_dopo = @array(
'<div class="bbcode-quote">$1</div>'
);
 
$testo = nl2br(preg_replace($bb_prima, $bb_dopo, $testo)); 

return $testo;

}
il mio problema è che, se faccio semplicemente

codice:
[ quote ] prova quote [ / quote ]
funziona benissimo.. però se faccio un doppio bbcode tipo questo

codice:
[ quote ] prova quote [ quote ] prova doppio quote [ / quote ][ / quote ]
così non fa.. cioè stampa così

<div class="bbcode-quote">prova quote[ quote ]prova doppio bbcode[ / quote ]</div>

cioè nn mi stampa il doppio quote.. come mai?