$messaggio = preg_replace('/\\[([a-zA-Z]){1}\\]([^\\[]*)\\[\/\\1]/i', '<\\1>\\2</\\1>', $messaggio);

Ciao!