Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Da CSV a PHP, facendo attenzione a come si va a capo

Link copiato negli appunti

CSV ("comma separated values": valori separati da virgola) è un formato di file per esportare ed importare dati contenuti in una tabella. Nonostante la sua semplicità  e il fatto che non ne esiste un vero e proprio standard, è molto diffuso come mezzo di interscambio fra tecnologie o applicazioni molto diverse fra loro. àˆ naturale (e molto opportuno) che esistano svariati strumenti in grado di poterci lavorare: tutti i più noti DBMS (Database Management System) possono esportare ed importare dati in CSV, ma, a proposito di web, anche PHP ha diverse funzioni utili che ci consentono facilmente di leggere ed scrivere in questo formato.

Particolarmente comoda la funzione str_getcsv che crea automaticamente un array con indici a partire da un file CSV, consentendoci anche di specificare delimitatori di campo ed eventuale carattere di escape. Purtroppo si tratta di una funzione disponibile solo a partire da PHP 5.3 (non è detto che sia già  di base in diversi servizi di hosting), ma in mancanza di questa scorciatoia, ci sono funzioni più semplici, come fgetcsv, che consentono di rimediare, magari allungando leggermente il nostro codice.
Fin qui tutto bene, una risorsa in più da conoscere se non possiamo per qualche motivo appoggiarci alla più nota accoppiata PHP-SQL.

Se tuttavia lavoriamo con Mac OS X, potremo imbatterci in bizzarri comportamenti dell'interprete PHP a causa della particolare codifica utilizzata dal sistema operativo del colosso di Cupertino per indicare l'inizio della nuova linea.. I tre sistemi operativi più diffusi utilizzano infatti tre diversi caratteri ASCII per indicarlo: Unix e i sistemi Unix-like usano "line feed", Mac OS X "carriage return", e Windows una combinazione di entrambi.

Di base PHP non interpreta "carriage return" come una nuova riga, e questo impedisce di lavorare con file CSV creati da Mac OS X: "carriage return" delimita la fine del record, ed è evidente che questa "incomunicabilità " renda inutili i nostri sforzi per un parsing corretto. àˆ sufficiente tuttavia impostare l'opzione non molto nota auto_detect_line_endings per superare il problema. Possiamo farlo naturalmente modificando il file php.ini, ma qualora non ne avessimo la possibilità , è sufficiente impostare il parametro in runtine (valido quindi unicamente per quello script) tramite il comando:

ini_set("auto_detect_line_endings", true);

Oppure ci affidiamo ad un editor di testo avanzato (come ad esempio Text Wrangler) e scegliamo noi la codifica per andare a capo.

Ti consigliamo anche