Скрипт собирает данные из разных .xls файлов в массив, который потом тут же выгружает в CSV.
Есть 2 вида файлов, оба .XLS, но структура немного разная: в одном строки объединены, поэтому приходится с ними возиться; к тому же всё равно в одной из этих строк хранится сразу несколько нужных данных, хорошо хоть отделённых символом "|".
Так или иначе, из обоих видов файлов получается один и тот же массив: Артикул, производитель, цена, количество.
Примеры массивов, из двух разных файлов:
Array
(
[1] => Array
(
[sku] => KR0867M
[maker] => KRAUF
[name] => Модуль в сборе с бензонасосом
[quantity] => 1
[price] => 2508
)
[2] => Array
(
[sku] => SMD030764
[maker] => CHERY
[name] => Прокладка помпы
[quantity] => 1
[price] => 75
)
)
Array
(
[1] => Array
(
[sku] => 2300235K01J
[maker] => GREAT WALL
[name] => ПОДШИПНИК РОЛИКОВЫЙ ШЕСТЕРНИ БЛОКИРОВКИ ПЕРЕДНЕГО МОСТА HOVER - 2300235-K01
[quantity] => 1
[price] => 117.08
)
[2] => Array
(
[sku] => 2310012K01
[maker] => GREAT WALL
[name] => ШЕСТЕРНЯ БЛОКИРОВКИ ПЕРЕДНЕГО МОСТА HOVER
[quantity] => 1
[price] => 1266.19
)
)
Но почему-то при экспорте некоторые элементы массивов обрамляются кавычками и пробелом, а некоторые - нет.
Вот код для записи в .CSV:
$filename = explode(".", $file);
$output = fopen('csv/'.$filename[0].'.csv', 'w');
fputs($output, chr(0xEF) . chr(0xBB) . chr(0xBF)); // BOM
foreach ($row as $key)
{
fputcsv($output, $key, ';');
}
Вот что записывается в .CSV файлы, соответственно:
KR0867M;KRAUF;"Модуль в сборе с бензонасосом";1;2508
SMD030764;CHERY;"Прокладка помпы";1;75
" 2300235K01J ";"GREAT WALL ";" ПОДШИПНИК РОЛИКОВЫЙ ШЕСТЕРНИ БЛОКИРОВКИ ПЕРЕДНЕГО МОСТА HOVER - 2300235-K01";1;117.08
" 2310012K01 ";"GREAT WALL ";" ШЕСТЕРНЯ БЛОКИРОВКИ ПЕРЕДНЕГО МОСТА HOVER";1;1266.19
Меня напрягает то что в одном случае в кавычки оборачивается только наименование номенклатуры, а в другом - также и артикул, и производитель.
Попробовал посмотреть тип переменной с производителем: gettype($key['maker']) - выдаёт что во всех случаях string, но блин почему тогда в одном случае string оборачивается в кавычки, а в другом - нет?
Не понимаю, в чём проблема?
UPD: разобрался! заметил что в одном случае в файле есть кавычки и пробел, в другом - просто кавычки. увидел, что при делении строки не избавился от пробелом. функция trim убрала пробелы и решила проблему