Eliminar caracteres raros de una cadena (por ejemplo cuando subes un archivo)

Está función la uso usualmente cuando subo un archivo al servidor (usando un formulario con el método POST, etc.), básicamente lo que hago es limpiar el nombre del archivo quitándole los caracteres raros, caracteres no validos en Linux, etc. luego le aplico un TRIM y de ser necesario puedo reemplazar los espacios en blancos con guiones “-”

La mayoría de los servidores web corren sobre Linux, por tanto pueden existir en una misma carpeta un archivo ejemplo.txt y Ejemplo.txt, ambos serán tomados como archivos diferentes, cosa que no ocurre en Linux

funcion scan_nombre($string)
    {
        $string = trim($string);

        $string = str_replace(array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),$string);
        $string = str_replace(array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë'),array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E'),$string);
        $string = str_replace(array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'),array('i', 'i', 'i', 'i', 'I', 'I', 'I', 'I'),$string);
        $string = str_replace(array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'),array('o', 'o', 'o', 'o', 'O', 'O', 'O', 'O'),$string);
        $string = str_replace(array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü'),array('u', 'u', 'u', 'u', 'U', 'U', 'U', 'U'),$string);
        $string = str_replace(array('ñ', 'Ñ', 'ç', 'Ç'),array('n', 'N', 'c', 'C',),$string);

        $string = str_replace(
            array("\\", "¨", "º", "~",
                "#", "@", "|", "!", "\"",
                "·", "$", "%", "&", "/",
                "(", ")", "?", "'", "¡",
                "¿", "[", "^", "`", "]",
                "+", "}", "{", "¨", "´",
                ">", "< ", ";", ",", ":",
                " "),
            '',$string);
        return $string;
    }

Ojo, esta función solo quita caracteres raros, al resultado de esta funciones deben aplicar un TRIM o reemplazar los espacios en blanco por guiones usando str_replace o modificando la función según lo requieran.

Un Comentario para “Eliminar caracteres raros de una cadena (por ejemplo cuando subes un archivo)”

  1. La mayoria de los servidores web corren sobre Linux, por tanto pueden existir en una misma carpeta un archivo ejemplo.txt y Ejemplo.txt, ambos serán tomados como archivos diferentes, cosa que no ocurre en Linux

    Windows querras decir?

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *