PHP

Eliminar acentos con PHP

En ocasiones resulta útil quitar las tildes o acentos de una cadena, en especial cuando queremos usarla como una URL, aunque podemos tener diversos motivos. Además también vamos a reemplazar otras letras como la ñ y la cecilla.

Para ello usamos la función str_replace y le pasamos como primer parámetro el array de letras que queremos reemplazar en la cadena, como segundo parámetro el array con las letras por las que queremos sustituir las anteriores y como tercer parámetro la cadena sobre la que queremos realizar la acción. Dividiremos la acción en cinco partes para que el código sea algo más legible. Además, es importante que si nos da errores u obtenemos caracteres extraños en el resultado, nos aseguremos de que la cadena está codificada como UTF8 para evitar problemas con el juego de caracteres; de lo contrario, no es necesario realizar esta tarea, puesto que nos dará problemas adicionales.

function eliminar_tildes($cadena){

    //Codificamos la cadena en formato utf8 en caso de que nos de errores
    $cadena = utf8_encode($cadena);

    //Ahora reemplazamos las letras
    $cadena = str_replace(
        array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),
        array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),
        $cadena
    );

    $cadena = str_replace(
        array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë'),
        array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E'),
        $cadena );

    $cadena = str_replace(
        array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'),
        array('i', 'i', 'i', 'i', 'I', 'I', 'I', 'I'),
        $cadena );

    $cadena = str_replace(
        array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'),
        array('o', 'o', 'o', 'o', 'O', 'O', 'O', 'O'),
        $cadena );

    $cadena = str_replace(
        array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü'),
        array('u', 'u', 'u', 'u', 'U', 'U', 'U', 'U'),
        $cadena );

    $cadena = str_replace(
        array('ñ', 'Ñ', 'ç', 'Ç'),
        array('n', 'N', 'c', 'C'),
        $cadena
    );

    return $cadena;
}

Si tenemos la cadena en una variable llamada $variable, sencillamente tenemos que pasársela a la función:

$variable= eliminar_tildes($variable);

En caso de querer usar esta cadena como URL también tendríamos que asegurarnos de que otros caracteres no están presentes, siendo más adecuada la función:

$cadena = preg_replace("/[^a-zA-Z0-9_-]+/", "", $cadena);

Fácil y para toda la familia.

EduZRO

Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

No Comments

comment No comments yet

You can be first to leave a comment

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *