Создание CSV с помощью PHP

Я пытаюсь создать динамический CSV-файл для экспорта на сайт поставщиков на моем сайте. Они хотят, чтобы все значения были заключены в двойные кавычки. Я пытаюсь создать строку, а затем передать ее в fputcsv(), но она выходит с кучей двойных кавычек, когда я просматриваю ее в блокноте2, и как 1 запись при просмотре в Excel. Вот мои значения:

$line = '"'.$row->petID.'","'.$row->customID.'","'.$row->petName.'","'.trim($row->breedName1).'","'.trim($row->breedName2).'","'.$df->setGender($row->gender).'","'.$df->setSize($row->size).'","'.$df->setAge($row->age).'","'.$description.'","'.$row->pType.'","'.$df->setStatus($row->status).'","","'.$row->isAltered.'","'.$ND.'","'.$NC.'","'.$NK.'","'.$df->isHousetrained($row->housebroken).'","'.$df->isDeclawed($row->declaw).'","'.$df->isSpecialNeeds($row->isSpecial).'","'.$df->isMix($row->breed2).'","'.$PhotoURL1.'","'.$PhotoURL2.'","'.$PhotoURL3.'"';

и получается вот так с помощью текстового редактора: """13651"","""",""валет"",""чихуахуа"",""шпиц"",""М"",""S "",""Малыш"",""Джек и Хосе родились от милой помесь чихуахуа и померанского шпица весом 7 фунтов, которую привезли в приют как бездомную. В середине августа их отлучат от груди для переезда в новый дом. Хотя отец неизвестен , щенки, скорее всего, останутся маленькими. Пожалуйста, посетите наш веб-сайт www.dogswithoutborders.org, чтобы подать онлайн-заявку на усыновление Джека или Хосе и узнать больше о наших ярмарках усыновления."",""Собака"",""А" ","""",""0"","""","""","""","""","""","""",""1""," "http://photos.petfinder.com/photos/US/CA/CA1087/20460152/CA1087.20460152-1-x.jpg"","""","""""

Когда я удаляю вручную добавленные "(s)", я получаю только один в начале и один в конце. Есть идеи?


person Wally Kolcz    schedule 16.02.2013    source источник


Ответы (2)


Используйте встроенную функциональность CSV!

<?php
    $fp = fopen('file.csv', 'w');
    fputcsv($fp, array('item1','items'));
    fclose($fp);
?>

Справочник

person John Conde    schedule 16.02.2013

Вместо того, чтобы делать это самостоятельно, вы можете использовать эту функцию PHP:

fputcsv

Документация находится здесь: http://php.net/manual/en/function.fputcsv.php

как в документации, вы можете...

//put your data in an array like this:
$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);
//open the output file for writing
$fp = fopen('file.csv', 'w');

//write to the csv file (comma separated, double quote enclosed)
foreach ($list as $fields) {
    fputcsv($fp, $fields,',','"');
}
//close the file
fclose($fp);
person Tucker    schedule 16.02.2013
comment
Спасибо за информацию. Единственная проблема заключается в том, что кажется, что fputcsv выбирает и выбирает, что ставить в двойные кавычки. Мой поставщик требует от меня двойных кавычек для всех значений. - person Wally Kolcz; 27.03.2013
comment
@Wally Kolcz хм, вы пробовали что-то вроде примера, который я только что добавил выше? - person Tucker; 27.03.2013