Столкнулся с проблемой импорта xls-таблицы, сохраненной в csv. Изначально делалось так:
$data = file($file_name);
foreach ($data as $key => $val) {
// здесь обрабатываем каждую запись в таблице
}
Пока данные в таблице однострочные, всё прекрасно работает. Но как только в одном из полей появляется символ новой строки, мы получаем массив $data, в котором части строк с разделителями попадают в новый элемент массива.
Решение оказалось достаточно элементарным. Excel при сохранении CSV разделяет строки символами CR+LF, а многострочные записи в одном поле только символом LF. Таким образом получаем следующий код:
$str = file_get_contents($file_name);
$data = explode("\r\n", $str);
// а дальше всё так же, как в предыдущем варианте :)
foreach ($data as $key => $val) {
// здесь обрабатываем каждую запись в таблице
}
Как обрабатывать сами строки — это уже немного другой вопрос. Главное не забывать, что строковые данные заключаются в двойные кавычки, а двойные кавычки внутри текстовых полей просто дублируются.
Комментариев нет:
Отправить комментарий