Visualizzazione risultati 1 fino 4 di 4

Discussione: Cancella l'ultima riga txt e ne iscerisce una nuova all'inizio

  1. #1
    Data registrazione
    20-04-2014
    Messaggi
    149

    Predefinito Cancella l'ultima riga txt e ne iscerisce una nuova all'inizio

    Codice PHP:
    <?php

    $lines
    = file('file.txt');
    $last = sizeof($lines) - 1 ;
    unset(
    $lines[$last]);
    $fp = fopen('file.txt', 'w');
    fwrite($fp, implode('', $lines));
    fclose($fp);



    //secondo pezzo
    $var1= 'text';//recupero la variabile globale var1 di tipo POST
    $var=@fopen("file.txt","r+");//apro il file .txt (modalità lettura/scrittura)
    @fwrite($var,$var1."\n");//scrivo la variabile del form nel file .txt
    $var2=file("file.txt");//estraggo l'array dal file .txt
    @fclose($var);//chiudo il file .txt
    ?>

    Ho rubato i codici qua e là su Google. Messi insieme, non funzionano.

    In particolare il secondo pezzo
    Ultima modifica di pkspritesearch : 11-07-2014 alle ore 19.02.23

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,576

    Predefinito

    Non rubare i codici da nessuna parte.

    Leggi il file con la file_get_contents(), quindi con la substr() elimini tutta la parte dall'ultimo '\n' in poi (con la strrpos()).

    A questo punto hai il file senza l'ultima riga. Quindi poi è sufficiente riscriverlo concatenandoci la prima riga che vuoi inserire, con la file_put_contents()

    Si poteva anche fare tramite gli array, con file(), ma penso che trattandolo come stringa in questo caso sia meglio.

    Ciao!

  3. #3
    Data registrazione
    20-04-2014
    Messaggi
    149

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Non rubare i codici da nessuna parte.

    [...]

    Ciao!
    Caro alemoppo.

    Codice PHP:
    $lines = file('file.txt');
    $last = sizeof($lines) - 1 ;
    unset(
    $lines[$last]);
    $fp = fopen('file.txt', 'w');
    fwrite($fp, implode('', $lines));
    fclose($fp);
    Per rimuovere l'ultima riga ho risolto così...

    Ho provato con file_put_contents(), però nell'editor php di altervista, non viene evidenziata la sua sintassi.
    A parte ciò funziona tutto benissimo. Grazie.

    Lascio il codice per gli interessati all'argomento.
    Codice PHP:
    <?
    $lines
    = file('file.txt');
    $last = sizeof($lines) - 1 ;
    unset(
    $lines[$last]);

    $fp = fopen('file.txt', 'w');
    fwrite($fp, implode('', $lines));
    fclose($fp);






    $file = 'file.txt';
    $current = file_get_contents($file);
    $test = "John Smith\n".$current;
    file_put_contents($file, $test);
    ?>

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,576

    Predefinito

    Secondo me è un po' uno spreco usare sia fopen() e derivate (fwrite, fclose), file() e infine file_get_contents() e file_put_contents() [in pratica, tutte le funzioni per gestire i file!]. Senza contare che il file lo modifichi due volte!. Ogni accesso ai file rallenta lo script di tanto. Io avrei fatto più semplicemente:

    Codice PHP:
    <?php
    $file
    = 'file.txt';
    $test = 'John Smith';

    $contenuto = file_get_contents($file);
    file_put_contents($file, $test.PHP_EOL.substr($contenuto, 0, strrpos($contenuto, PHP_EOL)));
    ?>
    Dove PHP_EOL sarebbe il ritorno a capo appropriato.

    Ciao!
    Ultima modifica di alemoppo : 12-07-2014 alle ore 14.26.03

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •