Sto utilizzando PHP per importare i dati da un file CSV utilizzando fgetcsv(), che produce un array per ogni riga. Inizialmente, avevo il set limite di caratteri a 1024, in questo modo:Assicurarsi che fgetcsv() legga l'intera riga
while ($data = fgetcsv($fp, 1024)) {
// do stuff with the row
}
Tuttavia, un CSV con oltre 200 colonne superato il limite di 1024 più righe. Ciò ha causato l'interruzione della lettura della riga nel mezzo di una riga, quindi la chiamata successiva a fgetcsv() iniziava da dove era stata interrotta la precedente e così via fino al raggiungimento di un EOL.
Ho quindi aumentato questo limite a 4096, che dovrebbe occuparsi della maggior parte dei casi, ma vorrei inserire un controllo per essere sicuro che l'intera riga sia stata letta dopo che ogni riga è stata recuperata. Come faccio a fare questo?
Stavo pensando di controllare la fine dell'ultimo elemento dell'array per i caratteri di fine riga (\ n, \ r, \ r \ n), ma non sarebbe analizzato dalla chiamata fgetcsv() ?
Inoltre, mi rendo conto che potrei determinare a livello di codice la riga più lunga nel file, ma questo potrebbe essere un sovraccarico su file CSV veramente grandi. Vorrei capire come garantire che ogni riga sia letta nella sua interezza al volo. –