Foros del Web » Programando para Internet » PHP »

Hacer numeros equivalentes a letras con combinaciones entre mayúsculas y minusculas

Estas en el tema de Hacer numeros equivalentes a letras con combinaciones entre mayúsculas y minusculas en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 20/04/2015, 13:53
 
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);

  #2 (permalink)  
Antiguo 20/04/2015, 15:12
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Hacer numeros equivalentes a letras con combinaciones entre mayúsculas y m

Supongo que quieres algo como el equivalente a las letras de las columnas en excel.

Código PHP:
Ver original
  1. function NumToLetter($Col){
  2.     if ($Col < 27)
  3.         return chr($Col + 64);
  4.     $Col--;
  5.     return NumToLetter($Col / 26) . NumToLetter(($Col % 26)+1 );
  6. }

Aunque en este caso sólo se toma en cuenta mayúsculas.

Etiquetas: letras, numeros, sistema
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:07.