Come creare file CSV in PHP
Un file con estensione CSV (Comma Separated Values) è un semplice file di testo la cui struttura cerca di imitare una tabella, dove ogni riga corrisponde ad un record, e i valori dei campi sono separati, “di solito”, da una virgola. È un formato molto utilizzato, soprattutto per l’esportazione di dati. Oggi, in questo articolo, vedremo insieme come creare un file CSV in PHP.
Sono moltissime le applicazioni che supportano il formato CSV, tra cui Excel, OpenOffice Calc, LibreOffice Calc e tantissimi programmi di elaborazione dati.
Abbiamo già visto Come leggere un file CSV in PHP sfruttando la libreria open source CsvFileLoader. Ma PHP ha anche alcune funzioni native con le quali è possibile scrivere e leggere dati in CSV. In particolare, in questo articolo vedremo come usare le funzione fputcsv() per aggiungere dati strutturati in un file di testo.
Innanzitutto, analizziamo la funzione e subito dopo vediamo come usarla con un esempio per creare un file CSV in PHP.
La funzione fputcsv() accetta 5 parametri:
- handle: è il puntatore al file dove scrivere i dati. Il file deve essere preventivamente aperto con fopen() o fsockopen().
- fields: è un array di stringhe (i dati).
- delimiter: è un parametro opzionale che serve ad indicare il separatore. Dev’essere un solo carattere e di default è la virgola (,).
- enclosure: è un parametro opzionale e indica il carattere che delimita il valore dei campi. Di default è ” (virgolette).
- escape_char: parametro opzionale con il quale è possibile indicare caratteri escape.
Quindi, come hai visto, i parametri fondamentali, che dovremmo passare alla funzione fpucsv() sono il file(handle) e l’array con dati (fields). Vediamo come usare la funzione nella pratica con un esempio.
Come generare un file CSV in PHP
Prima di generare il file CVS, dobbiamo creare una matrice bidimensionale con i dati.
I dati possono provenire da diverse fonti, ma nella maggior parte dei casi sono estratti da un data base.
In questo esempio non preoccupiamoci della provenienza dei dati, supponiamo di averli già salvati in un array bidimensionale.
array (
array ( "nome", "cognome", "data di nascita"),
array ( "Mario", "Rossi", "27/05/1980" ),
array ( "Luca", "Bianchi", "15/02/1987" )
)
Vediamo ora come creare un file CSV estraendo i dati da questo array in PHP.
Il codice che da scrivere dovrà:
- generare il puntatore al file con il comando
fopen("nomefile",'w')
. Ti ricordo che fopen() prova ad aprire un file con il nome passato come primo argomento e se il file non esiste lo crea. Il parametro ‘w’ indica che il file dev’essere aperto in sola scrittura. Puoi consultare la documentazione della funzione fopen() cliccando qui. - iterare l’array e scrivere il contenuto, riga per riga, con la funzione fputcsv($handle, array).
- chiudere il file con la funzione fclose ( $handle )
Quindi, il codice completo nel nostro piccolo esempio sarà:
$matrice = array (
array ( "nome", "cognome", "data di nascita"),
array ( "Mario", "Rossi", "27/05/1980" ),
array ( "Luca", "Bianchi", "15/02/1987" )
)
$handle = fopen("esempio.csv",'w')
foreach ($matrice as $riga){
fputcsv( $handle, $riga);
}
fclose($handle)
Salvalo e chiama il file esempio.php, poi eseguilo via terminale con il comando:
> php esempio.php
Nella stessa cartella nella quale esegui lo script in php sarà creato il file esempio.csv, all’interno del quale troverai i dati estratti dall’array bidimensionale e salvati secondo le specifiche del formato CSV.
Ti ricordo, che poiché abbiamo aperto il file in sola scrittura con il parametro ‘w’, ogni volta che esegui lo script, il contenuto del file sarà cancellato e riscritto. Per poter aprire un file in scrittura e aggiungere del testo, senza cancellare il suo contenuto, il parametro da usare è ‘a’ o ‘a+’.
Conclusioni
Spero di esserti stato utile con questa breve guida. Per qualsiasi informazione o chiarimento non esitare a contattarci attraverso la nostra pagina Facebook o via email.
Continua a seguirci, nuove guide, trucchi e tutorial ti aspettano su BlogAmico.it