Как разбирать csv в PHP с многострочными данными в столбце

Рассмотрим CSV-файл, подобный этому

item1,"description 1" item2,"description 2" item3,"description 3 description 3 continues on new line" item4,"description 4" 

который должен быть проанализирован следующим образом

 item1,"description 1" item2,"description 2" item3,"description 3 description 3 continues on new line" item4,"description 4" 

Есть ли способ проанализировать этот CSV в PHP, который имеет многострочные значения?

fgetcsv должен иметь возможность правильно проанализировать это.
В любом случае, я бы не рекомендовал это делать вручную. В разборе CSV есть много таких ошибок.

Вот несколько рабочих примеров, как это сделать. Я использую fgetcsv:

CSV в строковой переменной $ CsvString:

 $fp = tmpfile(); fwrite($fp, $CsvString); rewind($fp); //rewind to process CSV while (($row = fgetcsv($fp, 0)) !== FALSE) { print_r($row); } 

CSV в файле:

 if (($handle = fopen("test.csv", "r")) !== FALSE) { while (($row = fgetcsv($handle, 0, ",")) !== FALSE) { print_r($row); } fclose($handle); } 

На основе ответа StanleyD , но с использованием блока временной памяти (а не записи на диск) для повышения производительности:

 $fp = fopen('php://temp','r+'); fwrite($fp, $CsvString); rewind($fp); //rewind to process CSV while (($row = fgetcsv($fp, 0)) !== FALSE) { print_r($row); }