Gracias por la respuesta, al final lo he solucionado así, por los anidados y tal:
Código PHP:
// Reemplazo de funciones
$word = $resultados_temas["contenido"];
while (preg_match('^\[color=(.*?)\](.*?)\[\/color\]^', $word )> 0){
$word=preg_replace('^\[color=(.*?)\](.*?)\[\/color\]^', '<font color="\\1">\\2</font>', $word);
}