beh, quella va bene, ma prova questa
codice:
preg_replace("/\[([a-z]+)\]/e", "\$arr[] = \"$1\";", $testo);
e ottieni in $arr tutti gli elementi desiderati..facile, no?