Leggere e scrivere il contenuto di un file in php

Obiettivo
In questo articolo tratteremo come leggere e scrivere in un file testuale di qualsiasi estensione.

Aprire e chiudere un file
Come prima cosa da fare, prima di poter leggere o scrivere il contenuto del file, questo deve essere aperto, dopodiche'
possiamo fare cio' che vogliamo. Dopo dobbiamo chiudere il file.
Per aprite un file usiamo la funzione

puntatore_al_file=fopen("nome del file", "modalita");

che ritorna 1 se tutto e' andato bene altrimenti 0. Questa funzione ha due parametri:

Il primo e' il nome del file
Il secondo e' la modalita' con cui questo file deve essere aperto. Essa puo' essere:

"r" lettura (read)
"w" scrittura (write)
"rw" lettura/scrittura (read/write)

A seconda di quello che dobbiamo fare.
Il file viene poi chiuso con la funzione

fclose (puntatore_al_file);

Ad esempio supponiamo di voler aprire e chiudere un file per leggerne il contenuto

$news=fopen("file.txt","r"); 
fclose ($news);

Leggere i dati
In php, il contenuto di un file, puo' essere letto in tre modi:

Tutto in una volta
Riga per riga
Carattere per carattere

Noi vedremo come questo sia possibile per tutti e tre i casi.

_Leggere il file in una volta
Per leggere il file tutto in un sol colpo dobbiamo usare la funzione

$contents = fread($handle, filesize($filename));

che ritorna il contenuto del file e prende come parametri il puntatore del file aperto e la dimensione del
file che ci viene data dalla funzione

filesize("nome_del_file");

<?php
$filename = "file.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
echo "$contents";
fclose($handle);
?>

_Leggere il file riga per riga
Per leggere il file riga per riga dobbiamo usare la funzione

$buffer = fgets($news, 4096);

che legge riga per riga il file. Ogni riga viene pero' passata come parametro da un ciclo while
che cicla riga riga per riga il file fino a quando non incontra il carattere di fine file "EOF".

while (!feof($news)) {
$buffer = fgets($news, 4096);
}

<?php
$news=fopen("file.txt","r");  //apre il file
while (!feof($news)) {
$buffer = fgets($news, 4096);
echo "$buffer"; //riga letta
}
fclose ($news); #chiude il file
?>

_Leggere il carattere per carattere
Per leggere il file carattere per carattere dobbiamo usare la funzione

fgetc();

che ritorna il carattere letto

<?php
$fp = fopen('file.txt', 'r');
while (false !== ($char = fgetc($fp))) {
echo "$char\n";
}
?>

Scrivere sul file
L'operazione di scrittura e' piu' facile di quella di lettura. Occore usare la funzione

fwrite(}

che scrive i dati sul file

<?php
$filename = 'file.txt';
$contenuto = "Prova di contenuto nel file\n";
$handle=fopen($filename,"w"); //apre il file
fwrite($handle, $contenuto)
fclose($handle);
}
?>