La funcion limpiaCadena deberia revisar si estan activadas las comillas magicas, de ser asi, deshace lo hecho por addslashes, por eso no lleva el signo de admiracion
! que equivale a
NOT.
Para evitar problemas con acentos y tildes podrias usar
htmlspecialchars() y verificar que tanto la base de datos, como tu archivo y la meta correspondiente usen la misma codificacion de caracteres (UTF-8 o ISO8859-1).