Foros del Web » Programando para Internet » PHP »

Pasar de contador numerico a contador que incluya otros caracteres

Estas en el tema de Pasar de contador numerico a contador que incluya otros caracteres en el foro de PHP en Foros del Web. Hola, tengo este codigo que es un contador en base a numeros decimales: Código: <? $counter = fopen("contador.txt","r+"); $read = fgets($counter,10); ++$read; rewind($counter); fputs($counter,$read); fclose($counter); ...
  #1 (permalink)  
Antiguo 21/12/2009, 23:48
 
Fecha de Ingreso: diciembre-2009
Mensajes: 28
Antigüedad: 14 años, 4 meses
Puntos: 0
Sonrisa Pasar de contador numerico a contador que incluya otros caracteres

Hola, tengo este codigo que es un contador en base a numeros decimales:

Código:
<?
$counter = fopen("contador.txt","r+");

$read = fgets($counter,10);

++$read;

rewind($counter);

fputs($counter,$read);

fclose($counter);

echo "visitante: $read";
?>
Y quisiera pasarlo a que cuente consecutivamente pero incluyendo caracteres.

De lo que usa: 0123456789 que pase a ser: 01234...abcd... y caracteres especiales.

osea para que cuente usando no solo numero sino tambien caracteres que yo elija.

Alguien sabe?

  #2 (permalink)  
Antiguo 22/12/2009, 06:53
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Pasar de contador numerico a contador que incluya otros caracteres

Es complicado, pero creo que podría hacerse con un array con los caracteres que quieres contener (o directamente contando en hexadecimal, que incluye los números del 0 al 9 y las letras de la A a la F). Piensa que todo proceso de conteo debe hacerse sobre un conjunto ordenado de elementos (aunque sea infinito). Si quieres te ayudo a pensar la solución, pero antes: ¿para qué quieres hacer eso? ¡Suerte!
  #3 (permalink)  
Antiguo 22/12/2009, 09:22
 
Fecha de Ingreso: diciembre-2009
Mensajes: 28
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Pasar de contador numerico a contador que incluya otros caracteres

Hola, gracias por responder, con el codigo pretendo hacer algo asi como un contador generico porque al poder escojer lo caracteres consecutivos que yo quiera, no solo podre contar en decimal, sino en exadecimal, octal etc

por la internet encontre tambien este codigo:

Código:
<? 
function assign_rand_value($num) 
{ 
// accepts 1 - 36 
  switch($num) 
  { 
    case "1": 
     $rand_value = "a"; 
    break; 
    case "2": 
     $rand_value = "b"; 
    break; 
    case "3": 
     $rand_value = "c"; 
    break; 
    case "4": 
     $rand_value = "d"; 
    break; 
    case "5": 
     $rand_value = "e"; 
    break; 
    case "6": 
     $rand_value = "f"; 
    break; 
    case "7": 
     $rand_value = "g"; 
    break; 
    case "8": 
     $rand_value = "h"; 
    break; 
    case "9": 
     $rand_value = "i"; 
    break; 
    case "10": 
     $rand_value = "j"; 
    break; 
    case "11": 
     $rand_value = "k"; 
    break; 
    case "12": 
     $rand_value = "l"; 
    break; 
    case "13": 
     $rand_value = "m"; 
    break; 
    case "14": 
     $rand_value = "n"; 
    break; 
    case "15": 
     $rand_value = "o"; 
    break; 
    case "16": 
     $rand_value = "p"; 
    break; 
    case "17": 
     $rand_value = "q"; 
    break; 
    case "18": 
     $rand_value = "r"; 
    break; 
    case "19": 
     $rand_value = "s"; 
    break; 
    case "20": 
     $rand_value = "t"; 
    break; 
    case "21": 
     $rand_value = "u"; 
    break; 
    case "22": 
     $rand_value = "v"; 
    break; 
    case "23": 
     $rand_value = "w"; 
    break; 
    case "24": 
     $rand_value = "x"; 
    break; 
    case "25": 
     $rand_value = "y"; 
    break; 
    case "26": 
     $rand_value = "z"; 
    break; 
    case "27": 
     $rand_value = "0"; 
    break; 
    case "28": 
     $rand_value = "1"; 
    break; 
    case "29": 
     $rand_value = "2"; 
    break; 
    case "30": 
     $rand_value = "3"; 
    break; 
    case "31": 
     $rand_value = "4"; 
    break; 
    case "32": 
     $rand_value = "5"; 
    break; 
    case "33": 
     $rand_value = "6"; 
    break; 
    case "34": 
     $rand_value = "7"; 
    break; 
    case "35": 
     $rand_value = "8"; 
    break; 
    case "36": 
     $rand_value = "9"; 
    break; 
  } 
return $rand_value; 
} 


function get_rand_id($length) 
{ 
  if($length>0) 
  { 
  $rand_id=""; 
   for($i=1; $i<=$length; $i++) 
   { 
   mt_srand((double)microtime() * 1000000); 
   $num = mt_rand(1,37); 
   $rand_id .= assign_rand_value($num); 
   } 
  } 
return $rand_id; 
} 
echo get_rand_id(6);
?>
Se podra adaptar para que que en vez de generar aleatoriamente se ponga a contar (que poco a poco vaya aumentando) ordenadamente?

No importa que tipo de codigo usar, solo deseo que se genere un contador asi, porque se que es un contador general y seguro a muchos para cualquier cosa como fines educativos les puede interesar.

Muchas gracias
  #4 (permalink)  
Antiguo 22/12/2009, 09:29
 
Fecha de Ingreso: diciembre-2009
Mensajes: 28
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Pasar de contador numerico a contador que incluya otros caracteres

Me olvide mencionar que este ultimo codigo que pegue lo saque de aqui:

[URL="http://www.i-fubar.com/random-string-generator.php"]http://www.i-fubar.com/random-string-generator.php[/URL]

Gracias
  #5 (permalink)  
Antiguo 22/12/2009, 11:35
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Pasar de contador numerico a contador que incluya otros caracteres

Para contar en hexadecimal o en octal no hace falta hacer tremendo lío. De todos modos sigo sin saber cuál es el objetivo. Por otra parte, ese código que tienes es casi equivalente a tener un array asociativo (que además es más sencillo). ¡Suerte!
  #6 (permalink)  
Antiguo 22/12/2009, 13:00
 
Fecha de Ingreso: diciembre-2009
Mensajes: 28
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Pasar de contador numerico a contador que incluya otros caracteres

Hola, tal vez existan formas de contar en octal, hexadecimal etc pero dudo que se puedan hacer cambiando por ejemplo el orden de los numeros o letras, es por eso que deseo que puedan ordenarse a voluntad de uno mismo.

Y como es un array asociativo? me podrias poner un ejemplo como podria hacerlo?. En si lo que necesito es bastante sencillo algo asi como tomar cualquier caracter y ponerlos a contar, como si fuesen numeros.

Bueno el objetivo es descifrar unos textos que parecen encriptados, y quiero probarlo de esta forma para saber si tienen algun tipo de continuedad numerica, algo dificil de explicar, solo se que es algo secreto pero en beneficio de la humanidad, yo me entiendo solo.

por eso les suplico a ustedes que me ayuden, nunca estudie sistemas, pero si entiendo php como funciona pero no se teoria para armarlo como yo deseo, gracias por su comprension.
  #7 (permalink)  
Antiguo 22/12/2009, 14:00
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Pasar de contador numerico a contador que incluya otros caracteres

Un array es un conjunto de datos a los que se accede mediante un índice. Un array asociativo es un array al que se le puede variar los índices. Los índices pueden ser numéricos o texto (no sé si funciona con otro tipo de datos). En PHP todos los arrays son asociativos (aunque no siempre sea necesario aprovechar esa característica). Busca información sobre los arrays en PHP. ¡Suerte!

PD: también te convendría investigar sobre los sistemas de numeración si es lo que te interesa.
PD2: para reemplazar caracteres dispones de varias funciones en PHP; por ejemplo str_replace, strtr o funciones para el manejo de expresiones regulares.
PD3: si el texto está encriptado, sencillamente será muy difícil traducirlo. Piensa que podría haberse encriptado mediante un montón de métodos distintos y no todos son tan automáticos como reemplazar todos los caracteres por otros (por ejemplo, el algoritmo de Huffman sirve para comprimir, pero también para encriptar).
  #8 (permalink)  
Antiguo 22/12/2009, 17:05
 
Fecha de Ingreso: diciembre-2009
Mensajes: 28
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Pasar de contador numerico a contador que incluya otros caracteres

Hola, siento que usted es buena persona, gracias por su apoyo, en si lo que intento descifrar es algunos textos de algunos libros antiguos (forma de libro, con una especie de papel muy grueso), que fueron desentarrados hace mas de 10 años secretamente al norte de Peru, fue encontrado por particulares, pertenecen a una civilizacion de gente pequeña porque a su lado fue encontrado restos de esa gente, ahora el libro tiene partes de simbolos extraños, la cual los agrupe en signos repetitivos y a cada tipo de letra de ellos pienso ponerle un valor y asi intentar descifrar que puede resultar comparando con otros textos que ya se sabe masomenos que significa, llama la atencion hacerca de libro, porque se sabe que fueron creados en nuestra epoca, pero la realidad es que pertenece a mas antiguo de la epoca de los lemurianos que tenian tecnologi superiores a nosotros, en fin un extenso bla bla bla que solo pueden entender personas que conocen la verdadera historia del mundo. Y precisamente por eso quiero generar eso, porque los caracteres son mas que del 0 al 9, son muchos, y quiero hacerlos contar si por esa parte puedo lograr algo.

Amigo, no se nada de teorias, aun asi investigare lo que me recomiendas, como veras la forma de encriptacion son de antiguos, bueno si pudieras darme un ejemplo lo mas sencillo posible de como hacer eso, me ayudarias muchisimo, gracias.

Saludos
  #9 (permalink)  
Antiguo 22/12/2009, 22:22
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: Pasar de contador numerico a contador que incluya otros caracteres

Bueno, te mostraré como hacer algo de eso con arrays asociativos y la función strtr:
Código PHP:
$cadena="Cuando llego digo 'hola', cuando me voy digo 'adiós'";
$arrReemplazos=array('hola'=>'buen día''adiós'=>'chau');
$nuevaCadena strtr($cadena$arrReemplazos);
echo 
$nuevaCadena;    // Muestra: "Cuando llego digo 'buen día', cuando me voy digo 'chau'" 
El array debe tener la clave como la cadena a reemplazar, y el valor como la cadena que reemplazará a la primera. Aquí te dejo otro ejemplo (lo encontré en la referencia de la función strtr en la página oficial de PHP):
Código PHP:
function normalize ($string) {
    
$table = array(
        
'Š'=>'S''š'=>'s''Đ'=>'Dj''đ'=>'dj''Ž'=>'Z''ž'=>'z''Č'=>'C''č'=>'c''Ć'=>'C''ć'=>'c',
        
'À'=>'A''Á'=>'A''Â'=>'A''Ã'=>'A''Ä'=>'A''Å'=>'A''Æ'=>'A''Ç'=>'C''È'=>'E''É'=>'E',
        
'Ê'=>'E''Ë'=>'E''Ì'=>'I''Í'=>'I''Î'=>'I''Ï'=>'I''Ñ'=>'N''Ò'=>'O''Ó'=>'O''Ô'=>'O',
        
'Õ'=>'O''Ö'=>'O''Ø'=>'O''Ù'=>'U''Ú'=>'U''Û'=>'U''Ü'=>'U''Ý'=>'Y''Þ'=>'B''ß'=>'Ss',
        
'à'=>'a''á'=>'a''â'=>'a''ã'=>'a''ä'=>'a''å'=>'a''æ'=>'a''ç'=>'c''è'=>'e''é'=>'e',
        
'ê'=>'e''ë'=>'e''ì'=>'i''í'=>'i''î'=>'i''ï'=>'i''ð'=>'o''ñ'=>'n''ò'=>'o''ó'=>'o',
        
'ô'=>'o''õ'=>'o''ö'=>'o''ø'=>'o''ù'=>'u''ú'=>'u''û'=>'u''ý'=>'y''ý'=>'y''þ'=>'b',
        
'ÿ'=>'y''Ŕ'=>'R''ŕ'=>'r',
    );
   
    return 
strtr($string$table);

El código ese cambia los caracteres no ASCII (el ASCII no extendido) por su equivalente.
Creo que lo que quieres hacer se aproxima mucho más a estas cosas que a un "contador". Por cierto, mucha suerte con ese proyecto de traducción, que pinta muy interesante. Cualquier problema o consulta postealo.
  #10 (permalink)  
Antiguo 23/12/2009, 00:02
 
Fecha de Ingreso: diciembre-2009
Mensajes: 28
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Pasar de contador numerico a contador que incluya otros caracteres

Hola amigo, gracias, si entendi el codigo que me pusiste de ejemplo, veo a intentar hacerlo funcionar con algun contador para que me reemplaze series de caractares en orden numerica, ojala pueda ;) , de aqui en 20 horas terminare practicando y probando esos codigos (saldre mañana), hasta pronto.

Saludos
  #11 (permalink)  
Antiguo 23/12/2009, 21:12
 
Fecha de Ingreso: diciembre-2009
Mensajes: 28
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Pasar de contador numerico a contador que incluya otros caracteres

Estuve intentando pero no logro vincular para que cuente consecutivamente, la funcion array es para reemplazar caracteres completos por decir, por ej: 'C'=>'125', osea cuando la cuenta llega a 125 imprime "C" por ejemplo, no es asi?, eso no busco en realidad, o bueno no se si me explique bien o estoy medio volado comprendiendo la funcion. a ver pondre de nuevo la explicacion de lo que deseo:

Por ejemplo en una serie de numeros decimales:"0,1,2,3,4,5,6,7,8,9" la cuenta numerica es, "0,1,2,3,...,8,9,10,11,12...101,102,103,104... " es lo normal en los contadores.

Y lo que yo deseo de una serie pre definida cualquiera: "a,y,g,k,s,r,g" imprima la cuenta asi: "a,y,g,k,s,r,g,aa,ay,ag,ak,as,ar,ag,ya,yy,yg,...ay a,ayy,ayg,ayk....... eso es lo que deseo.

Osea analizandolo veo que no hay nada que reemplazar, solo hacerlo correr una tras otra, osea contar como si fuesen numeros.

Espero me haya explicado bien esta vez, habra funcion para eso?

Saludos cordiales a todos :)
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 12:21.