Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2019
    Messaggi
    12

    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,637
    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
    12
    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,637
    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
    12
    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,637
    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
    12
    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.

  8. #8
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,637
    Chiaro.. lato codice ovviamente non puoi così capire quanto parti di testo sono collegate fra loro (titolo e blocchi di testo). Il separatore come avevi indicato potrebbe risolverti il problema. una volta salvato testo e titolo aggiungi una riga con un separatore che vuoi, in questo modo avrai poi una cosa tipo :
    codice:
    [0] titolo 1[1] Testo.....1[2] #separatore#[3] Titolo 2......
    E potrai spezzare sul separatore. Altre soluzioni non sapendo cosa c'è dietro a tutto ciò ora come ora non saprei. Non capisco come mai più articoli(chiamiamoli cosi') debbano essere tutti in un file di testo e non separati

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2019
    Messaggi
    12
    La scelta di volerli tutti in un solo file è un'idea puramente di comodità, per adesso non avendo ancora implementato questo infatti sto lavorando su file separati, tantissimi.La domanda è, mettendo questo separatore, come do' l'istruzione di andare a leggermi il testo dopo un separatore piuttosto che un altro?Grazie.Luigi

  10. #10
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,637
    I contenuti stanno su un file e non a DB perche' non hai un database? Potrà essere anche comodo ma tendere più contenuti avrai e più pesante potrà diventare quel file e di conseguenza anche lo script che lo andrà a leggere (in questo caso appunto il ciclo). Calcolando che per qualche motivo dovessi perdere il solo file avrai perso tutto in un colpo solo. Se puoi indicare a grandi linee il passaggio far l'inserimento e salvataggio di un file magari si trova una soluzione semplice per gestire la suddivisione, banalmente anche per cartelle per data magari.Per capire quando fermarti nel recuperare il contenuto dall'array, nel tuo ciclo incontrerai il valore di riga uguale al separatore.

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.