While reading a csv file with PHP a problem occured with a line break within the CSV file. The contents of one cell will be split once a comma is followed by a line break:
$csv = array_map('str_getcsv', file($file));
first,second,"third,
more,text","forth"
next,dataset
This will result in:
1) first | second | third
2) more text | forth
3) next | dataset
While it should result in:
1) first | second | third more text | forth
2) next | dataset
Is this a bug within str_getcsv?
Don't do that, use fgetcsv()
. You're having problems because file()
doesn't care about the string encapsulation in your file.
$fh = fopen('file.csv', 'r');
while( $line = fgetcsv($fh) ) {
// do a thing
}
fclose($fh);
https://secure.php.net/manual/en/function.fgetcsv.php
And try not to store all the lines into an array before performing your operations if you can help it. Your system's memory usage will thank you.