Ver Mensaje Individual
  #19 (permalink)  
Antiguo 14/07/2011, 18:41
Avatar de nicolaslt
nicolaslt
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 119
Antigüedad: 15 años
Puntos: 5
Respuesta: Generar ID alfanumérico

Buenas..

Bueno, les aviso que ya dí solucion al problema.

Me decidí por la solución que me propusieron vgonga1986 y eleazan en un principio...

Y encontré un link muy interesnte en la pagina w3support.net

http://es.w3support.net/index.php?db=so&id=959957

Esta función es la encargada de codificar y decodificar los números en el código.

Código PHP:
Ver original
  1. class BaseIntEncoder {
  2.     //const $codeset = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  3.     //readable character set excluded (0,O,1,l)
  4.     const codeset = "0123456789abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ-_";
  5.     static function encode($n){
  6.         $base = strlen(self::codeset);
  7.         $converted = '';
  8.         while ($n > 0) {
  9.             $converted = substr(self::codeset, bcmod($n,$base), 1) . $converted;
  10.             $n = self::bcFloor(bcdiv($n, $base));
  11.         }
  12.         return $converted ;
  13.     }
  14.     static function decode($code){
  15.         $base = strlen(self::codeset);
  16.         $c = '0';
  17.         for ($i = strlen($code); $i; $i--) {
  18.             $c = bcadd($c,bcmul(strpos(self::codeset, substr($code, (-1 * ( $i - strlen($code) )),1))
  19.                     ,bcpow($base,$i-1)));
  20.         }
  21.         return bcmul($c, 1, 0);
  22.     }
  23.     static private function bcFloor($x)
  24.     {
  25.         return bcmul($x, '1', 0);
  26.     }
  27.     static private function bcCeil($x)
  28.     {
  29.         $floor = bcFloor($x);
  30.         return bcadd($floor, ceil(bcsub($x, $floor)));
  31.     }
  32.     static private function bcRound($x)
  33.     {
  34.         $floor = bcFloor($x);
  35.         return bcadd($floor, round(bcsub($x, $floor)));
  36.     }
  37. }

Saludos y gracias a todos los que respondieron ;)