Gracias por la ayuda Ramón, como esto era un pequeño desvío de mi proyecto personal de crear una app, pues no voy a entredar mucho, arreglaré lo de los caracteres especiales y lo dejaré estar. No me compensa gastar tiempo en esto.
La función reverse es una propia del lenguaje PHP, concretamente: strrev();
Por supuesto que lo puedo arreglar creando una personalizada, pero lo dejo estar por ahora.
Pego unas imágenes para que se vea el resultado con unas pruebas que hice, espero que le sirva a alguien en un futuro.
La primera columna son los caracteres que me dan error, la segunda un grupo de letras
'ABC','DEF','GHI','JKL' y la tercera las letras A,B,C,D. Como se ve se realizan las 24 combinaciones posibles, sin entrar en el string, sino tratándolo como un bloque de 4 elementos diferentes