Categorías
hoy aprendí ...

… a realizar chapucerías con caracteres y fórmulas en hojas de cálculo

Resulta que una tabla con nombres debía prepararla para ser procesada por PHP para generar contenido repetitivo. El nombre de la persona escrito de manera normal debia luego usarlo como nombre de archivo en el servidor web para cargar la foto, dejando todo en minúscula y reemplazando espacios con guión bajo, y acentos.

Ej:

Juan Pérez -> juan_perez

Resulta que en LibreOffice Calc (y asumo que en Excel también) hay una funciones para trabajar con strings (cadenas de caracteres).

=MINUSC(SUSTITUIR(B10;" ";"_"))

Básicamente logra pasar a minúscula y reemplazar los espacios.

Juan Pérez -> juan_pérez

La última parte de reemplazar los caracteres especiales de acentos, ñ, y apóstrofes lo terminé realizando en PHP con la ayuda de https://codigosdeprogramacion.com/2019/07/11/quitar-acentos-y-tildes-en-php/

function eliminar_acentos($cadena){

    //Reemplazamos la A y a
    $cadena = str_replace(
    array('Á', 'À', 'Â', 'Ä', 'á', 'à', 'ä', 'â', 'ª'),
    array('A', 'A', 'A', 'A', 'a', 'a', 'a', 'a', 'a'),
    $cadena
    );

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

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

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

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

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

    //Reemplazamos apróstrofes ' ’ ` ´
    $cadena = str_replace(
    array("'", '’', '`', '´'),
    array('', '', '', ''),
    $cadena
    );

    return $cadena;
}

Y chau

Deja una respuesta

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