English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di base PHP

Tutorial avanzato PHP

PHP & MySQL

Manuale di riferimento PHP

File PHP

In questo tutorial, imparerai come utilizzare le funzioni del file system di PHP per creare, accedere (o leggere) e manipolare file in modo dinamico.

Gestire file utilizzando PHP

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.

Aprire file utilizzando la funzione fopen() di PHP

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
rApertura del file in sola lettura
r+Apertura del file per lettura/scrittura
wApertura 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.
aAggiunta. 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.
xApertura 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.

Chiusura del file utilizzando la funzione fclose() di PHP

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.

Lettura di un file utilizzando la funzione fread() di PHP

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.

Lettura di un numero fisso di caratteri

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

Leggere tutto il contenuto del file

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‹/›

Scrivere file utilizzando la funzione fwrite() di PHP

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.";
?>

Rinominare un file utilizzando la funzione rename() di PHP

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.";
}
?>

Eliminare un file utilizzando la funzione unlink() di PHP

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.

Funzioni di sistema di file PHP

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.