No se si es que yo no se interpretar bien el manual de PHP pero a mi la función utf8_decode siempre me ha generado problemas. Quizas porque no se exactamente lo que significa esta línea y por eso uno comete el error al usar este comando.
Cita: utf8_decode — Convierte una cadena con los caracteres codificados ISO-8859-1 con UTF-8 a un sencillo byte ISO-8859-1
Si alguien lo explica yo personalmente lo agradezco.
Por otro lado para solventar lo de los acentos y eso yo uso la chapuza de usar dos arreglos, uno con los acentos y otro con su entidad html y con str_replace los convierto. Por lo menos así lo hago yo y funciona. Igual si alguien conoce una mejor opción que nos comente.