Corsi on-line

Generare CSV da un array in PHP

Oggi vedremo una piccola funzioncina in PHP tramite la quale sarà possibile generare file CSV (Comma Separated Values) a partire da un array, cioè da una variabile composta da una sequenza di valori associati a chiavi; partiamo da un semplice esempio di vettore multidimensionale:

$vettore = array(
array('a','b','c'),
array('il primo valore', 'il, secondo, valore', 'il terzo "valore"'),
);

Come è noto, un CSV presenta in genere valori separati da virgole, gli altri caratteri non dovrebbero quindi essere considerati come elementi per la delimitazione; ma i valori interni agli array in esempio contengono a loro volta altre virgole e caratteri come i doppi apici, la nostra funzione dovrà quindi essere in grado di ignorarli; vediamo come:

function getCsv($vettore, $delimitatore = ',', $chiusura = '"') {
       $sorgente = fopen('php://temp', 'r+');
       foreach ($vettore as $riga) {
               fputcsv($sorgente, $riga, $delimitatore, $chiusura);
       }
       rewind($sorgente);
       while (!feof($sorgente)) {
               $dati .= fread($sorgente, 8192);
       }
       fclose($sorgente);
       return $dati;
}

La funzione non fa altro che definire un carattere di delimitazione (in questo caso la virgola), accedere al sorgente dei dati (l’array) e scrivere il CSV elencando i dati tramite un ciclo separandoli attraverso il delimitatore scelto.

Post correlati
I più letti del mese
Tematiche