Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di kreker
    Registrato dal
    May 2000
    Messaggi
    144

    leggere file di testo e randomizzare frasi

    Dovrei avere per ogni aggiornamento di pagina una frase diversa, presa da un file.
    Prima l'avevo fatto con un vettore, ma non è comodo perchè bisogna riempire il vettore "a mano".
    Cosi ho pensato di leggere il contenuto del file txt e metterlo in un vettore, ogni riga un indice, e poi randomizzarla.

    $myfile="/images/frasi.txt";
    $frasi= file($myfile);
    $counter=count($frasi);
    print $counter;
    $num=rand(0,$counter);
    print $frasi[$num];

    Premetto che sono arruginitissimo con php, credo si capisca
    se printo il $counter mi restituisce sempre 1, e $frasi[$num] vuoto!
    Grazie

  2. #2
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Probabilmente non trova il file, forse il percorso non è corretto.
    Imposta l'error_reporting su E_ALL, così ti stampa l'errore.
    Inoltre devi mettere print $frasi[$num-1];

  3. #3
    Codice PHP:
    // Apro il file in sola lettura
            
    $src fopen$file 'r' ) ;
            
            
    // Controllo che il file sia stato aperto
            
    if ( $src === false ) die( '[b]ERRORE<b />: Impossibile leggere dal file sorgente' ) ;
            
            
    // Leggo il file
            
    while( !feof$src ) ) {
                
    $line trimfgets$src 4096 ) ) ; // Leggo una riga e la preparo
                
    if ( $line != '' ) {
                    
    $phrases[] = $line ;
                }
            } 
    In questo modo leggi il file riga per riga ed ogni riga la inserisci nell'array.

    A questo punto devi creare un numero random da 0 a count($phrases) e sei a posto. Ciao!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  4. #4
    Utente di HTML.it L'avatar di Teuzzo
    Registrato dal
    Mar 2002
    Messaggi
    969
    Originariamente inviato da mircov
    Codice PHP:
    // Apro il file in sola lettura
            
    $src fopen$file 'r' ) ;
            
            
    // Controllo che il file sia stato aperto
            
    if ( $src === false ) die( '[b]ERRORE<b />: Impossibile leggere dal file sorgente' ) ;
            
            
    // Leggo il file
            
    while( !feof$src ) ) {
                
    $line trimfgets$src 4096 ) ) ; // Leggo una riga e la preparo
                
    if ( $line != '' ) {
                    
    $phrases[] = $line ;
                }
            } 
    In questo modo leggi il file riga per riga ed ogni riga la inserisci nell'array.

    A questo punto devi creare un numero random da 0 a count($phrases) e sei a posto. Ciao!
    Tutta questa funzione la fa la funzione file()

  5. #5
    Azz! Non lo sapevo! Non utilizzo molto i file e questo codice, onestamente, l'ho preso da un altro script! Buono a sapersi comunque! Grazie!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  6. #6
    Utente di HTML.it L'avatar di kreker
    Registrato dal
    May 2000
    Messaggi
    144
    ok ci sono riuscito. con il codice che ho scritto prima.
    solo che non mi beccava il file, era sbagliato il path. ho messo il path assoluto del server e ora funziona
    grazie a tutti

    scusate un ultima domanda.
    ora ho il contenuto del file sull'array.
    se dovessi stamparlo in una tabella...dovrei stampare ogni contenuto degli indici in una <tr>....con un ciclio while presumo....
    Ma qualè la condizione??

  7. #7
    Utente di HTML.it L'avatar di kreker
    Registrato dal
    May 2000
    Messaggi
    144
    sono riuscito anche nel ciclo while.
    Una domandina veloce veloce

    Se io nel file tseto scrio test vorrei che venisse convertito in html...invece non lo fa...come si fa? thanks

  8. #8
    Kreker mi passeresti il codice completo perchè con il primo che hai postato non mi funziona...
    Mi servirebbe moltissimo...
    Grazie

  9. #9
    Utente di HTML.it L'avatar di kreker
    Registrato dal
    May 2000
    Messaggi
    144
    rispolvero questo 3d senza aprirne un altro.
    ho un problema. all'apertura del file mi becca sempre l'ultima riga, vuota, risultato?alle volte ho il print che non visualizza niente perchè appunto beccala riga vuota (anche se questa non c'è)
    Dal manuale del php ho trovato questo

    you can use
    $file = array_map('rtrim',file('myfile.txt'));
    to remove annoying ending lines of the resulting array.

    così ho creato questo...ma il risultato non cambia!
    chi mi aiuta?

    $frasi = array_map('rtrim',file('frasi.txt'));
    $counter=count($frasi);
    $num=rand(0,$counter);
    print $frasi[$num];

  10. #10
    tieni guarda se ti può essere utile (è una funzione stupidissima che utilizzo io per generare frasi casuali da un file txt con una frase x riga):
    Codice PHP:
     function randphrase(){
        
    $fname "/web/htdocs/miosito/public/phrases.dat";
        
    $linee file($fname);
        
    $tot = @rand(1sizeof($linee) - 1);
        echo 
    $linee[$tot];
        } 
    non è molto diversa da quella che hai scritto tu, ma a me funzia
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.