Hola otra vez alvlin, miré en DesarrolloWeb y en la cadena de reemplazo había que poner en vez de \\1, $1. También ahora uso preg_replace:
Código PHP:
$a = array(
"/\[i\](.*?)\[\/i\]/is",
);
$b = array(
"<i>$1</i>",
);
$texto = preg_replace($a, $b, $texto);
return $texto;
Gracias por haberme ayudado.