Есть csv файл. В нем разделителем является запятая, а роль экранирующего символа исполняют двойные кавычки.
Пример первых двух строк:
- "Название, Улица, Дом", 123, фирма, "Название1 (не относящиеся к первой строке)"
- "Название, Улица, Дом", 456, фирма, "Название2 (не относящиеся к первой строке)"
Стоить отметить, что первая ячейка первой строки и первая ячейка второй строки имеют одинаковое содержание.
Файл разбирается следующим образом:
$source_csv = fopen("/путь/название_файла.csv","r");
while (($csv_line = fgetcsv($source_csv)) !== FALSE) {
$parsed_csv[] = $csv_line;
}
fclose($source_csv);
Далее работая с этими строками, я заметил, что для первой строки результат обработки выходит кривой.
Вывел посмотреть отличия:
print_r($parsed_csv[0]);
print_r($parsed_csv[1]);
Получаю:
Array
(
[0] => "Название
[1] => Улица
[2] => Дом"
[3] => 123
[4] => Фирма
[5] => Название1 (не относящиеся к первой строке)
)
Array
(
[0] => Название, Улица, Дом
[1] => 456
[2] => Фирма
[3] => Название2 (не относящиеся к первой строке)
)
Попытки модификации первой строки и копирования других строк вместо первой приносили такой же результат. Как костыль сработало следующее: перед разбором добавляю в считанный файл в самое начало строку с пустыми значениями (,,,), а потом делаю unset($parsed_csv[0]). Костыли, это конечно хорошо (нет, не хорошо), но хотелось бы найти православное решение данной проблемы.