Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/04/2015, 13:53
kmario19
 
Fecha de Ingreso: diciembre-2012
Mensajes: 2
Antigüedad: 11 años, 4 meses
Puntos: 0
Hacer numeros equivalentes a letras con combinaciones entre mayúsculas y minusculas

Hola a todos estoy haciendo un algoritmo en PHP para que a partir de un numero me de su equivalente en letras según la cantidad que haya en el alfabeto distinguiendo entre minúsculas y mayusculas.

Creo que me explico mejor con un ejemplo:

1 => a, 2 => b, 3 => c, ..., 26 => z, 27=> A, 28 => B, ..., 52 => Z, ..., 53 => Aa, 54 => Ab, 55 => Ac, ..., 78 => Az, ..., 676 => ZZ, 677 => AAa... etc... etc...

Esto lo hago con el fin de crear algún tipo de encriptación para acortar URL donde están identificados con números pero para no tener por ejemplo el artículo #65754898 me quede como el articulo ID: ArLf o algo por el estilo, no se si mi algoritmo sea el mejor pero necesito uno que me acorte lo mas que pueda un numero de forma automática y no sea de forma aleatoria para que cuando tenga que guardarlo en una base de datos primero tenga que verificar si existe o no el ID generado (para ahorrar consultas) . De la misma forma una funcion que me pase ese ID ArLf a el número 65754898 (esta vez si para poder buscar su respectivo registro en la base de datos).

He estado usando una pequeña función que hice pero no arroja el resultado que quiero.

Código PHP:
function keyEcode($numero) {
    
$chars = array(=> 'a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''q''r''s''t''u''v''w''x''y''z');
    
    
$total count($chars);
    
    
$vueltas_por_letra ceil($numero/($total*2));
    
$vueltas_por_mayuscula ceil($numero/$total);    

    
$letras = array();
    for(
$i 1;$i <= $vueltas_por_letra$i++) {
        
$letra $numero-$total*($vueltas_por_mayuscula-1);
        
$mayuscula $i%== true false;
        if(
$mayuscula) {
            
$letras[$i] = strtoupper($chars[$letra]);
        } else {
            
$letras[$i] = $chars[$letra];
        }
    }
    return 
implode(''$letras);