Domanda

Sto cercando di analizzare i file CSV caricati dall'utente tramite PHP, ma non sta funzionando correttamente.

Ho caricato diverse CSV correttamente formattato e ha funzionato bene, tuttavia; Ho molti utenti cercando di importare i file CSV esportati da Excel e che stanno avendo problemi. Ho confrontato i file mia e ho notato che i file di Excel tutto cita la mancanza di tutto le voci. Oltre a ciò, sono identici. Se l'apro e salvarlo con Open Office, senza apportare modifiche a tutti funziona. Quindi sono abbastanza certo che sia legato alle citazioni.

La mia domanda è; Come faccio a leggere queste CSV formattato in modo improprio?

UPDATE: Causa è stato trovato

Questo è specifico per la versione Mac di Excel. Le interruzioni di riga sono gestite in modo diverso sui Mac per qualche ragione arbitraria, quindi prima di utilizzare fgetcsv, si dovrebbe fare questo;

ini_set('auto_detect_line_endings',TRUE);
È stato utile?

Soluzione

Questo è specifico per la versione Mac di Excel. Le interruzioni di riga sono gestite in modo diverso sui Mac per qualche ragione arbitraria, quindi prima di utilizzare fgetcsv, si dovrebbe fare questo;

ini_set('auto_detect_line_endings',TRUE);

Altri suggerimenti

pagina di manuale di fgetcsv , il suo prototipo è simile al seguente:

array fgetcsv  ( resource $handle  [, int $length  
    [, string $delimiter = ','  [, string $enclosure = '"' 
    [, string $escape = '\\'  ]]]] )

Il valore predefinito per $enclosure (cioè. Il 4 ° parametro) è una doppia citazione.

Che cosa succede se si prova specificando che non si vuole alcuna recinzione, specificando una stringa vuota per questo 4 ° parametro?

(Naturalmente, questo potrebbe rompere quello che sta ora lavorando - il che significa che avresti avuto a che fare con due casi distinti: i file con i campi racchiusi tra virgolette, e file che non possono essere letti dal primo caso)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top