Foros del Web » Programando para Internet » PHP »

palabras aleatorias

Estas en el tema de palabras aleatorias en el foro de PHP en Foros del Web. Hola seguramente para los entendidos en php esto que les pregunto es muy facil. Necesito una funcion que tome una serie de palabras o frases ...
  #1 (permalink)  
Antiguo 05/07/2004, 04:27
 
Fecha de Ingreso: abril-2002
Ubicación: Montevideo
Mensajes: 188
Antigüedad: 15 años, 7 meses
Puntos: 0
palabras aleatorias

Hola
seguramente para los entendidos en php esto que les pregunto es muy facil.

Necesito una funcion que tome una serie de palabras o frases separadas por
comas, de un archivo externo php o txt, y me las muestre en la pagina en
orden aleatorio cada vez que se abre dicha pagina...¿se entiende?, cada vez
que se carga el documento, aparecen las palabras o frases en diferente
orden, y si es posible (por pedir ya que estamos) que yo tenga oportunidad
de indicarle cuantas de esas frases o palabras a parezcan....

si alguien sabe y me puede ayudar muchas gracias...

salu
__________________
NoktoMaster
Publipixel
  #2 (permalink)  
Antiguo 05/07/2004, 04:43
Avatar de Trebol-a  
Fecha de Ingreso: enero-2003
Ubicación: Cartagena, España
Mensajes: 44
Antigüedad: 14 años, 11 meses
Puntos: 0
Pues te haces un fichero llamado "frases.txt" con un formato tal que así:
Código:
frase 1;
frase 2;
frase 3;
frase 4;
Luego una función que lo lea:
Código:
function frasealazar()
{
$abrir=fopen("frases.txt", r);
$listadefrases = fread($abrir, filesize("frases.txt"));
$frases = explode(";" $listadefrases)
$frasealazar=$frases[ Math.round( rand( 0, count($frases) ) ) ];
fclose($abrir);
return $frasealazar;
}
y en donde quieras que aparezca escribes:
Código:
print frasealazar();
creo que con eso te valga!! :D

Última edición por Trebol-a; 05/07/2004 a las 04:49
  #3 (permalink)  
Antiguo 05/07/2004, 05:21
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Creo que podría haber un problema con esta función... si uno quiere por ejemplo escribir 5 palabras, es probable (bastante) que salgan repetidas.
Ademas hay que abrir el archivo, volcarlo al array y cerrar el archivo para cada palabra que se quiera escribir.

Lo mejor sería que la función devolviera un array con todas las palabras desordenadas. De esa forma el archivo se abre una sola vez y eliminamos la posibilidad de palabras repetidas.
Código PHP:
function array_desordenado()
{
$abrir=fopen("frases.txt"r);
$listadefrases fread($abrirfilesize("frases.txt"));
$frases explode(";"$listadefrases)
fclose($abrir);
//Desordenamos el array:
shuffle($frases);
return 
$frases;

Y para utilizarla:
Código PHP:
$palabras array_desordenado();
//Y Puedes imprimir todas las palabras que quieras:
for($i=1;$i<=5;$i++){
   echo 
$palabras[$i];

Saludos
  #4 (permalink)  
Antiguo 05/07/2004, 13:35
 
Fecha de Ingreso: abril-2002
Ubicación: Montevideo
Mensajes: 188
Antigüedad: 15 años, 7 meses
Puntos: 0
muy buenas ambas respuestas Gracias!!
luego voy a probar a ver que tal me va..

ciao
__________________
NoktoMaster
Publipixel
  #5 (permalink)  
Antiguo 06/07/2004, 17:45
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
También podrías hacer la función un poco más genérica para poder utilizarla con otros archivos diferentes... Por ejemplo, puedes pasarle como parámetros el nombre de archivo y el caracter de ruptura:
Código PHP:
function array_desordenado($archivo$ruptura

$abrir=fopen($archivor); 
$listadefrases fread($abrirfilesize($archivo)); 
$frases explode($ruptura$listadefrases
fclose($abrir); 
//Desordenamos el array: 
shuffle($frases); 
return 
$frases

Y para obtener el array desordenado deberás pasarle a la función los parámertros necesarios.
Código PHP:
$palabras array_desordenado("frases.txt"";"); 
Y así sucesivamente pueds ir optimizando las cosas. Por ejemplo puedes hacer un "if" para saber si se pudo abrir el archivo y devolver otra cosa ("false" por ejemplo) en caso contrario.

Saludos
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 23:19.