Как использовать setcsvcontrol()
Доброе утро,
Я разрабатываю сценарий для создания файла CSV. Моя проблема - разделитель файла CSV, мне нужно использовать ";".
Я прочитал, что я должен использовать "setcsvcontrol()", но я пытаюсь использовать его, и у меня не было никаких результатов.
Это часть моего сценария:
$create = fopen($fecha."p.csv", "a");
$file = new SplFileObject($fecha."p.csv");
$file->setFlags(SplFileObject::READ_CSV);
$file->setCsvControl(';');
foreach($cadena as $fields){
fputcsv($create,$fields);
}
Благодарю.
2 ответа
SplFileObject::setCsvControl()
влияет только на объект, на котором он был вызван, т.е. $file
возражать в вашем случае. Это не влияет на $create
объект, который вы получили от fopen
даже если оба объекта работают с одним файлом.
Либо пиши в $create
использование объекта fputcsv($handle, $fields, $delimiter, $enclosure)
, проходя $create
в качестве первого аргумента и желаемого разделителя и вложения в качестве третьего и четвертого аргументов или вызова $file->fputcsv()
, В последнем случае вы должны создать SplFileObject
с возможностью записи с использованием подходящего $open_mode
,
Вы не передаете разделитель fputcsv
;
fputcsv($create,$fields, ";");
Вы также можете безопасно удалить
$file = new SplFileObject($fecha."p.csv");
$file->setFlags(SplFileObject::READ_CSV);
$file->setCsvControl(';');
если вы должны использовать SplFileObject
Затем измените свой код на.
$file = new SplFileObject("data.csv");
$file->setFlags(SplFileObject::WRITE_CSV);
$file->setCsvControl(';');
foreach ($rows as $row) {
$file->fputcsv($row);
}