PHP CSV string to array
Do this:
$csvData = file_get_contents($fileName);$lines = explode(PHP_EOL, $csvData);$array = array();foreach ($lines as $line) { $array[] = str_getcsv($line);}print_r($array);
It will give you an output like this:
Array( [0] => Array ( [0] => 12345 [1] => Computers [2] => Acer [3] => 4 [4] => Varta [5] => 5.93 [6] => 1 [7] => 0.04 [8] => 27-05-2013 ) [1] => Array ( [0] => 12346 [1] => Computers [2] => Acer [3] => 5 [4] => Decra [5] => 5.94 [6] => 1 [7] => 0.04 [8] => 27-05-2013 ))
I hope this can be of some help.
You should use fgetcsv. Since you cannot import a file as a stream because the csv is a variable, then you should spoof the string as a file by using php://temp
or php://memory
first:
$fp = fopen("php://temp", 'r+');fputs($fp, $csvText);rewind($fp);
Then you will have no problem using fgetcsv:
$csv = [];while ( ($data = fgetcsv($fp) ) !== FALSE ) { $csv[] = $data;}
$data
will be an array of a single csv line (which may include line breaks or commas, etc), as it should be.
Caveat: The memory limit of php://temp can be controlled by appending /maxmemory:NN, where NN is the maximum amount of data to keep in memory before using a temporary file, in bytes. (the default is 2 MB) http://www.php.net/manual/en/wrappers.php.php