Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Prendere solo alcune righe da un file txt

    Salve,

    cerco di spiegare brevemente il mio problema.

    Ho un file txt così composto:

    Linea1

    Linea2


    Ulteriore testo
    ...
    ...
    ...
    Mi servirebbe prendere la linea1 e metterla in una variabile, saltare la riga vuota(le righe vuote possono essere variabili) prendere linea2 e metterla in un altra variabile, saltare di nuovo lo spazio vuoto e Mettere tutto il resto del testo in un array. (Ogni posizione dell'array contiene una linea).

    codice:
    if ($handle) {
        
        while (($buffer = fgets($handle, 4096)) !== false) {
        if (strlen(trim($buffer)) > 0){ 
     
            
            list($user, $pass) = explode("|", $buffer);
            $accounts[]=$user;
            }
        }
        if (!feof($handle)) {
            echo "Error: unexpected fgets() fail\n";
        }
        fclose($handle);
    Questo è il codice che uso per leggere tutto il testo e metterlo nell'array, mi sfugge come fare la prima parte. Sapreste aiutarmi?

    Grazie in anticipo!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    Salvi i dati degli utenti in file .txt?

    Tralasciando questa opinabile scelta, in quanto potresti salvarli per esempio in .php e poi includendoli e confrontando con variabili/costanti, o sempre in file .php inserendo un <?php exit; ?> in cima al file e poi inserendo il testo...

    L'unico modo per salvare sempre bene il testo è numerarlo con le righe:
    l'user corrisponde sempre alla riga x
    e la password sempre alla riga y

    poi fai: $dati_utente = file('nome file');
    e hai ogni riga che corrisponde ad un elemento dell'array.

    Se mantieni il tuo metodo basta che conti le righe con un contatore

    definisci $c = 0; prima del while e poi quando $c è uguale alla riga che la interessi salvi il dato.

  3. #3
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    se la struttura è sempre la stessa (prime due righe non vuote in altrettante variabili, tutte le altre in un array), puoi fare una cosa di questo tipo
    Codice PHP:
    $source "source.txt";


    $handle fopen($source"r");


    if(
    $handle) {
        
    $a 1//contatore
        
    $linee_successive = array(); //array per le linee successive


        
    while(($buffer fgets($handle)) !== false) {
            if (
    trim($buffer) !== "") {
                switch (
    $a) {
                    case 
    1:
                        
    $prima_linea $buffer//assegno la prima riga ad una variabile
                        
    break;
                    case 
    2
                        
    $seconda_linea $buffer//assegno la seconda riga ad una variabile
                        
    break;
                }
                if(
    $a 2) {
                    
    $linee_successive[] = $buffer//per tutte le righe piene successive, assegno i dati all'array
                
    }
                
    $a++; //incremento il contatore
            
    }
        }
    }


    echo 
    "$prima_linea \n";
    echo 
    "$seconda_linea \n";
    print_r($linee_successive); 
    comunque valuta di cambiare il modo di memorizzazione dei dati utente, un file txt in chiaro accessibile da web è veramente poco sicuro (diverso sarebbe se il file fosse fuori dal web server, senza accesso diretto se non al programma)

  4. #4
    Grazie!

    No, ma non salvo usr e passw in un txt, è un codice che ho preso da un sito e lo stavo giusto usando per provare

  5. #5
    ma na cosa così?
    Codice PHP:
    $source "source.txt";

    $rows file($sourceFILE_SKIP_EMPTY_LINES);

    echo 
    $rows[0];
    echo 
    $rows[1]; 
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  6. #6
    Quote Originariamente inviata da zacca94 Visualizza il messaggio
    Salvi i dati degli utenti in file .txt?
    Nessuna persona sana di mente userebbe l'antiquato sistema dei database testuali. Purtroppo, chi è agli inizi, viene spesso traviato dalla carrettata di guide di vecchio stampo presenti su internet con titoli allettanti ( a volte anche aggiornate per funzionare con php 5.3 o 5.4). Quando ne incontri uno.. è perchè è agli inizi e poverino, non è troppo colpa sua se è finito sulla cattiva strada.

    L'uso di database testuali, se non espressamente richiesto da fondate cause esterne, nel 2014 (ma anche nel 2013, và) non ha più alcun senso.

  7. #7
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    non ricordavo che si potesse mettere quel flag in file()... E mi sa che non lo ricorda neanche il traduttore italiano del manuale delle funzioni del sito php.net -.-'

  8. #8
    Quote Originariamente inviata da clasku Visualizza il messaggio
    non ricordavo che si potesse mettere quel flag in file()... E mi sa che non lo ricorda neanche il traduttore italiano del manuale delle funzioni del sito php.net -.-'
    La bibbia è solo il manuale in inglese. Le traduzioni a volte non sono così fedeli.. e a volte i traduttori ci mettono del loro; un paio di volte sono stato rimandato alla versione in tedesco che riportava informazioni supplementari, peccato che io non parli tedesco

  9. #9
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    eh, lo so...
    ma stamattina quando sono andato a rivedere la funzione file() mi ha reindirizzato da solo sulla pagina italiana e non c'era la voce relativa ai flag che invece appare nella versione in inglese

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.