2012-12-20 15 views
5

Eventuali duplicati:
how to extract data from csv file in phpFile PHP e CSV: come rilevare il fine linea?

ho alcuni dati in XLS, li salva in formato CSV, il delimitatore è ** * virgola. Poi sto cercando di caricare i dati da questo file CSV:

$input = explode("\r\n", fread($file, filesize("my_data.csv"))); 
print_r($input); 

L'output:

Array ([0] => data from the CSV file) 

Questo è il problema - nella matrice è sempre un solo elemento, in cui vengono stampati tutti dati dal file CSV. Come è possibile? Perché non è presente nell'array tanti elementi quante sono le righe nel file CSV?

Inoltre, ho provato a cambiare "\r\n" per "\ n", ma è lo stesso.

Quello che sto cercando di fare - caricare ogni riga dal file CSV e questa ogni riga da elaborare.

esempio di file:

a,b,c,d 
e,f,g,h 

USCITA:

a,b,c,d e,f,g,h

+2

Utilizzare la funzione incorporata fgetcsv() per leggere i dati CSV –

+0

Qualsiasi motivo non si sta utilizzando http://php.net/manual/en/function.fgetcsv.php? Non cercare di analizzare i dati CSV da solo: ti troverai in un mondo di dolore con qualcosa di più complesso di una semplice lista di numeri. –

+0

Ma ragazzi, come risolvete l'ultimo oggetto della fila? Perché questo ultimo elemento ha una virgola alla fine, quindi l'ultimo elemento viene unito al primo elemento nella seconda riga. – user984621

risposta

4

Mi consiglia di utilizzare php incorporato nel file CSV funzione di lettura fgetcsv() e non le tue domande http://php.net/manual/en/function.fgetcsv.php

if (($handle = fopen($file, "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $row = implode (",",$data); //puts back together the row from the csv 
     echo $row. "\n"; //assuming you want a visual linebreak on console, add the \n 
    } 
    fclose($handle); 
} 
+0

Non so se è un bug oppure, ma quando provo a farlo, l'ultimo elemento della linea non ha una virgola alla fine - che cosa mi mette nei guai ... perché non mi aspetto un risultato. – user984621

+0

Ray, per favore controlla l'OP, questo è l'output che ottengo se userò questo snippet - la lettera 'd' e' e' sono unite in un unico oggetto. Questo è il mio intero problema che non so come risolvere. – user984621

0

Come ho risolto questo problema:

Nel file XLS, prima di esportare il file in formato CSV, ho aggiunto alla fine del foglio di un altro colonna con il char '.

Problemi correlati