Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2019
    Messaggi
    8

    Leggere una riga specifica da un txt

    Buonasera,

    avrei l'esigenza di leggere da un file txt solo alcune righe, ad esempio dalla 1 alla 5, dalla 6 alla 8, etc.

    Tutto questo è legato ad una condizione presente in un form di partenza.

    Questo è il codice che sto utilizzando:

    Codice PHP:
    if ($var25 == "OPZIONE01"){$testo nl2br($txt("testo_opzione01.txt"));} 
    Per adesso tutto va bene, ma non riesco a trovare un modo per fargli leggere le righe che voglio, ma solo tutto il file txt.

    Grazie mille.
    luigi

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,629
    Puoi mettere il file in un array (le righe appunto ) con https://www.php.net/manual/en/function.file.php e vederne il risultato

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2019
    Messaggi
    8
    Ciao e grazie.
    Ho provato come da te indicato,

    codice:
    <?php
    $lines = file('OPZIONE01.txt');
    foreach ($lines as $line_num => $line) {
        echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
    }
    ?>
    ma mi restituisce il file txt con ogni riga anticipata dal suo numero, a me invece interesserebbe ampliare la riga di codice già postata in precedenza che va estrapolare da un file txt solo un range di righe che mi interessano, questo perché io sto creando un form che va a generare un'altra pagina php con svariate offerte in base alle scelte fatte nel form, funziona, ma vorrei evitare di avere tot file txt quante sono le opzioni.

    Metto una porzione di file più ampia in modo da rendere meglio l'idea.

    codice:
    <?php
    $txt= ('file_get_contents');
    $var01= $_POST['nome'];
    if ($var01 == "OPZIONE1"){$testo = nl2br($txt("OPZIONE01.txt"));}
    if ($var01 == "OPZIONE2"){$testo = nl2br($txt("OPZIONE02.txt"));}
    if ($var01 == "OPZIONE3"){$testo = nl2br($txt("OPZIONE03.txt"));}
    if ($var01 == "OPZIONE4"){$testo = nl2br($txt("OPZIONE04.txt"));}
    if ($var01 == "OPZIONE5"){$testo = nl2br($txt("OPZIONE05.txt"));}
    if ($var01 == "OPZIONE6"){$testo = nl2br($txt("OPZIONE06.txt"));}
    echo"
    
    
    <form action='' method=''>
    
    $testo
    
    
    </form>"
    ;
    ?>

  4. #4
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,629
    Non mi e' chiarissimo ma file() ritorna il contenutodi un file (il tuo txt) in un array e quindi avrai una cosa di questo tipo
    codice:
    $fileToArray = file('__file_path___');
    var_dump($fileToArray);
    Il var_dump() dovrebbe quindi mostarti il risultato / array e quindi le tue righe saranno
    codice:
    $fileToarray[0]; //prima riga
    $fileToarray[1]; //seconda riga
    .......
    La riga anticipata dal numero c'è perche' hai messo quel <b>{$line_num}</b>
    I numeri non so come li calcoli (in arrivo dalla form) ma semplicemente essendo un un ciclo, quando $line_numb corrispnderà all'indice del file (o indice-1 dato che l'array inizia da 0) mostrerai i tuoi dati

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2019
    Messaggi
    8
    Ti ringrazio!
    Funziona, l'ho inserito in questo modo:

    codice:
    <?php
    $txt01 = file('OPZIONE.txt');
    if ($var01 == "OPZIONE1"){$testo = $txt01[2];}
    echo"
    
    
    <form action='' method=''>
    
    
    $testo
    
    
    </form>"
    ;
    ?>
    Così facendo mi restituisce il secondo paragrafo del file "OPZIONE.txt", adesso a me però occorre che mi restituisca più righe per ogni variabile, e mi spiego meglio.
    Nel file OPZIONE.txt io ho un testo ad esempio:
    codice:
    Ahi quanto a dir qual era è cosa dura,
    esta selva selvaggia e aspra e forte
    che nel pensier rinova la paura!
    
    
    Ed una lupa, che di tutte brame
    sembiava carca ne la sua magrezza
    e molte genti fé già viver grame...
    
    
    "A te convien tenere altro viaggio,"
    rispuose, poi che lagrimar mi vide,
    "se vuoi campar d'esto loco selvaggio..."
    a me occorrerebbe che dopo una scelta tramite form io possa visualizzare il primo, il secondo o il terzo paragrafo, non solo una riga, quindi la soluzione va bene, ma dovrei visualizzare più righe, e di consegunza mantenere anche la formattazione originale, infatti con i vari file txt divisi io sto utilizzando "nl2br" per far riconoscere la formattazione del testo.
    Avevo pensato di anteporre ad ogni parte del testo che mi occorre ad esempio un carattere univoco, in modo da dire al file php che riceve il form di cercare quel carattere e restituirmi il testo che ne segue, formattato, indicando quindi invece del numero del blocco di testo preceduto dal carattere utilizzato.

    Non mi spiego un granché bene ma spero di essere riuscito comunque a farmi capire.

    Grazie.
    Luigi

  6. #6
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,629
    Ad occhio e croce vuoi visualizzare i vari paragrafi trovati nel testo senza sapere quante righe ci possono essere prima di andare a capo. Se la regola per la fine del testo/paragrafo è una riga vuota, Potresti ciclare l'array ($fileToArray) , crearne un altro dove inserirai 1 elemento concatenando tutti gli elementi fino a che non trovi un elemento/indice vuoto. In questo modo avrai un ultimo array con 1 elemento per ogni paragrafo. Un po' difficile aiutare non sapendo che formattazione può esserci nel file di testo con o meno varianti

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2019
    Messaggi
    8
    ciao e grazie,
    il file di testo dalla quale prendere le informazioni è semplicissimo, nessuna formattazione particolare, un semplice txt, ti riporto un esempio:

    codice:
    [riga 1]titolo 01
    [riga 2]
    [riga 3]testo 01
    [riga 4]
    [riga 5]titolo 02
    [riga 6]
    [riga 7]testo 02
    [riga 8]testo 02
    [riga 9]testo 02
    [riga 10]
    [riga 11]titolo 03
    [riga 12]
    [riga 13]testo 03
    a me interesse prendere titolo e testo corrispondenti alla scelta fatta nel form dalla quale invio i dati.

    Grazie
    Luigi.

Tag per questa discussione

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 © 2019 vBulletin Solutions, Inc. All rights reserved.