English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo tutorial, imparerai come utilizzare le funzioni del file system di PHP per creare, accedere (o leggere) e manipolare file in modo dinamico.
Poiché PHP è un linguaggio di programmazione server-side, ti permette di utilizzare file e directory memorizzati sul server Web. In questo tutorial, imparerai come utilizzare le funzioni del file system di PHP per creare, accedere e manipolare file sul server Web.
Per utilizzare un file, è necessario aprirlo prima. La funzione fopen() di PHP viene utilizzata per aprire file. La sintassi di base di questa funzione può essere espressa nel modo seguente:
fopen(filename, mode)
Il primo parametro passato a fopen() specifica il nome del file da aprire, il secondo parametro specifica il modo in cui il file deve essere aperto. Ad esempio:
<?php $handle = fopen("data.txt", "r"); ?>Testa e vediamo‹/›
Puoi aprire un file tramite uno dei seguenti metodi:
Modalità | Cosa può fare |
---|---|
r | Apertura del file in sola lettura |
r+ | Apertura del file per lettura/scrittura |
w | Apertura del file solo per scrittura e cancellazione del contenuto. Se il file non esiste, PHP tenta di crearlo. |
w+ | Apertura del file per lettura/scrittura e cancellazione del contenuto. Se il file non esiste, PHP tenta di crearlo. |
a | Aggiunta. Apertura del file solo per scrittura. Trattiene il contenuto del file scrivendo alla fine del file. Se il file non esiste, PHP tenta di crearlo. |
a+ | Lettura/aggiunta. Apertura del file per lettura/scrittura. Trattiene il contenuto del file scrivendo alla fine del file. Se il file non esiste, PHP tenta di crearlo. |
x | Apertura del file solo per scrittura. Se il file esiste, restituisce False e genera un errore. Se il file non esiste, PHP tenta di crearlo. |
x+ | Apertura del file per lettura/scrittura; altrimenti, il comportamento è lo stesso di "x". |
Se tenti di aprire un file inesistente, PHP genererà un messaggio di avviso. Pertanto, per evitare questi messaggi di errore, è consigliabile utilizzare la funzione PHP file_exists() per eseguire un controllo semplice prima di accedere a un file o una directory.
<?php $file = "data.txt"; //Controllare se il file esiste if(file_exists($file)){ // Tentativo di aprire il file $handle = fopen($file, "r"); } else { echo "ERROR: File does not exist."; } ?>Testa e vediamo‹/›
Suggerimento:Le operazioni sui file e le directory sono facili da sbagliare. Pertanto, è una buona abitudine implementare un tipo di controllo degli errori in modo che, in caso di errore, il tuo script possa gestire l'errore in modo elegante. Si prega di riferimento perGestione degli errori PHPguida.
Dopo aver utilizzato il file, è necessario chiuderlo. La funzione fclose() viene utilizzata per chiudere il file, come nell'esempio seguente:
<?php $file = "data.txt"; //Controllare se il file esiste if(file_exists($file)){ //Aprire il file da leggere $handle = fopen($file, "r") or die("ERROR: Cannot open the file."); /* Ecco alcuni codici da eseguire */ //Sto chiudendo il file handle fclose($handle); } else { echo "ERROR: File does not exist."; } ?>Testa e vediamo‹/›
Attenzione:Sebbene PHP chiuda automaticamente tutti i file aperti alla fine dello script, è meglio chiudere il file dopo aver completato tutte le operazioni.
Ora che hai capito come aprire e chiudere un file, nel prossimo capitolo imparerai come leggere dati da un file. PHP ha diverse funzioni per leggere dati da un file. Puoi leggere l'intero file con un singolo comando.
La funzione fread() può essere utilizzata per leggere un numero specifico di caratteri dal file. Puoi utilizzare la sintassi di base di questa funzione.
fread(file handle, length in bytes)
Questa funzione accetta due parametri - il gestore del file e il numero di byte da leggere. Esempio seguente legge 20 byte dal file "data.txt", inclusi gli spazi. Supponiamo che il file "data.txt" contenga il testo "The quick brown fox jumps over the lazy dog.".
<?php $file = "data.txt"; //Controllare se il file esiste if(file_exists($file)){ //Aprire il file da leggere $handle = fopen($file, "r") or die("ERROR: Cannot open the file."); //Leggere un numero fisso di byte dal file $content = fread($handle, "20"); //Chiudere il file handle fclose($handle); //Visualizzare il contenuto del file echo $content; } else { echo "ERROR: File does not exist."; } ?>Testa e vediamo‹/›
L'esempio sopra produrrà il seguente output:
The quick brown fox
La funzione fread() può essere combinata con la funzione filesize() per leggere tutto il file in una volta. La funzione filesize() ha la seguente funzione: restituisce la dimensione del file in byte.
<?php $file = "data.txt"; //Controllare se il file esiste if(file_exists($file)){ //Aprire il file da leggere $handle = fopen($file, "r") or die("ERROR: Cannot open the file."); //Sto leggendo tutto il file $content = fread($handle, filesize($file)); //Sto chiudendo il file handle fclose($handle); //Visualizzare il contenuto del file echo $content; } else { echo "ERROR: File does not exist."; } ?>Testa e vediamo‹/›
L'esempio sopra produrrà il seguente output:
The quick brown fox jumps over the lazy dog.
Il metodo più semplice per leggere tutto il contenuto di un file in PHP è utilizzare la funzione readfile(). Questa funzione consente di leggere il contenuto del file senza aprirlo. L'esempio seguente genererà lo stesso output dell'esempio precedente:
<?php $file = "data.txt"; //Controllare se il file esiste if(file_exists($file)){ //Leggere e visualizzare tutto il file readfile($file) or die("ERROR: Cannot open the file."); } else { echo "ERROR: File does not exist."; } ?>Testa e vediamo‹/›
L'esempio sopra produrrà il seguente output:
The quick brown fox jumps over the lazy dog.
Un altro metodo per leggere tutto il contenuto del file senza aprirlo è utilizzare la funzione file_get_contents(). Questa funzione accetta il nome del file e il percorso e legge tutto il file in una variabile di stringa. Ecco un esempio:
<?php $file = "data.txt"; //Controllare se il file esiste if(file_exists($file)){ //Leggere tutto il file in una stringa $content = file_get_contents($file) or die("ERROR: Cannot open the file."); //Visualizzare il contenuto del file echo $content; } else { echo "ERROR: File does not exist."; } ?>Testa e vediamo‹/›
Un altro metodo per leggere tutti i dati dal file in PHP è la funzione file(). La sua funzione è simile a file_get_content(), ma restituisce un array di righe di contenuto del file, piuttosto che un singolo stringa. Ogni elemento dell'array restituito corrisponde a una riga nel file.
Per elaborare i dati dei file, è necessario utilizzareciclo foreachEseguire la scansione dell'array. Questo è un esempio che legge i file nell'array e poi lo visualizza con un ciclo:
<?php $file = "data.txt"; //Controllare se il file esiste if(file_exists($file)){ //Leggi tutto il file nell'array $arr = file($file) or die("ERROR: Cannot open the file."); foreach($arr as $line){ echo $line; } } else { echo "ERROR: File does not exist."; } ?>Testa e vediamo‹/›
Allo stesso modo, si può utilizzare la funzione fwrite() di PHP per scrivere dati in un file o aggiungerli a un file esistente. La sintassi di base della funzione può essere fornita nel modo seguente:
fwrite(file handle, string)
La funzione fwrite() accetta due parametri—il file handle e la stringa di dati da scrivere, come nell'esempio seguente:
<?php $file = "note.txt"; //Stringa di dati da scrivere $data = "The quick brown fox jumps over the lazy dog."; //Apri il file per scrittura $handle = fopen($file, "w") or die("ERROR: Cannot open the file."); //Scrivere i dati nel file fwrite($handle, $data) or die ("ERROR: Cannot write the file."); //Chiudi il file handle fclose($handle); echo "I dati sono stati scritti nel file con successo."; ?>
Nel esempio sopra, se il file "note.txt" non esiste, PHP lo creerà automaticamente e scriverà i dati. Tuttavia, se il file "note.txt" esiste già, PHP cancellerà il contenuto del file (se presente) prima di scrivere i nuovi dati. Tuttavia, se si desidera aggiungere al file mantenendo il contenuto esistente, utilizzare l'esempio sopra.Modalità a invece di w.
Un altro metodo è utilizzare la funzione file_put_contents(). È la funzione corrispondente a file_get_contents(), che offre un modo semplice per scrivere dati in un file senza aprirlo. La funzione accetta il nome e il percorso del file e i dati da scrivere nel file. Ecco un esempio:
<?php $file = "note.txt"; //Stringa di dati da scrivere $data = "The quick brown fox jumps over the lazy dog."; //Scrivere i dati nel file file_put_contents($file, $data) or die("ERROR: Cannot write the file."); echo "I dati sono stati scritti nel file con successo."; ?>
Se il file specificato nel file_put_contents() esiste già, per default PHP lo sovrascriverà. Se si desidera mantenere il contenuto del file, si può passare il flag speciale FILE_APPEND come terzo parametro a file_put_contents(). Aggiungerà semplicemente i nuovi dati alla fine del file, senza sovrascriverlo. Ecco un esempio:
<?php $file = "note.txt"; //Stringa di dati da scrivere $data = "The quick brown fox jumps over the lazy dog."; //Scrivere i dati nel file file_put_contents($file, $data, FILE_APPEND) or die("ERROR: Cannot write the file."); echo "I dati sono stati scritti nel file con successo."; ?>
Puoi utilizzare la funzione rename() di PHP per rinominare un file o una directory, come segue:
<?php $file = "file.txt"; //Controllare se il file esiste if(file_exists($file)){ //Prova a rinominare il file if(rename($file, "newfile.txt")){ echo "Il file è stato rinominato con successo."; } else { echo "Errore: impossibile rinominare il file."; } } else { echo "Errore: il file non esiste."; } ?>
Puoi utilizzare la funzione unlink() di PHP per eliminare un file o una directory, come segue:
<?php $file = "note.txt"; //Controllare se il file esiste if(file_exists($file)){ //Prova ad eliminare il file if(unlink($file)){ echo "Il file è stato eliminato con successo."; } else { echo "Errore: impossibile eliminare il file."; } } else { echo "Errore: il file non esiste."; } ?>
Nel capitolo successivo, impareremo riguardo a come utilizzareAnalizzare il percorso di una directory o della cartellaUlteriori informazioni.
La tabella seguente riassume alcune altre funzioni utili del sistema di file PHP, che possono essere utilizzate per leggere e scrivere file dinamicamente.
Funzione | Descrizione |
---|---|
fgetc() | Leggere un carattere alla volta. |
fgets() | Leggere una riga alla volta. |
fgetcsv() | Leggere una riga di valori separati da virgola. |
filetype() | Restituire il tipo del file. |
feof() | Controllare se è stato raggiunto la fine del file. |
is_file() | Controllare se il file è un file regolare. |
is_dir() | Controllare se il file è una directory. |
is_executable() | Controllare se il file è eseguibile. |
realpath() | Restituire il nome del percorso assoluto normalizzato. |
rmdir() | Eliminare una directory vuota. |
Si prega di consultare la riferimento del sistema di file PHP per ottenere altre funzioni utili del sistema di file PHP.