Если у меня есть CSV, сохраненный на сервере, как я могу использовать PHP для написания данной строки, скажем 142,fred,elephants
на дне?
Откройте CSV-файл для добавления ( fopen
Docs ):
$handle = fopen("test.csv", "a");
Затем добавьте свою строку ( fputcsv
Docs ):
fputcsv($handle, $line); # $line is an array of string values here
Затем закройте дескриптор ( fclose
Docs ):
fclose($handle);
Надеюсь, это полезно.
Вы можете использовать объектно-ориентированный класс интерфейса для файла – SplFileObject http://php.net/manual/en/splfileobject.fputcsv.php (PHP 5> = 5.4.0)
$file = new SplFileObject('file.csv', 'a'); $file->fputcsv(array('aaa', 'bbb', 'ccc', 'dddd')); $file = null;
Если вы хотите, чтобы каждый файл split сохранял заголовки оригинала; это модифицированная версия ответа Хакре:
$inputFile = './users.csv'; // the source file to split $outputFile = 'users_split'; // this will be appended with a number and .csv eg users_split1.csv $splitSize = 10; // how many rows per split file you want $in = fopen($inputFile, 'r'); $headers = fgets($in); // get the headers of the original file for insert into split files // No need to touch below this line.. $rowCount = 0; $fileCount = 1; while (!feof($in)) { if (($rowCount % $splitSize) == 0) { if ($rowCount > 0) { fclose($out); } $out = fopen($outputFile . $fileCount++ . '.csv', 'w'); fputcsv($out, explode(',', $headers)); } $data = fgetcsv($in); if ($data) fputcsv($out, $data); $rowCount++; } fclose($out);
Это решение работает для меня:
<?php $list = array ( "Peter,Griffin,Oslo,Norway", "Glenn,Quagmire,Oslo,Norway", ); $file = fopen("contacts.csv","w"); foreach ($list as $line) { fputcsv($file,explode(',',$line)); } fclose($file); ?>
Ссылка: https://www.w3schools.com/php/func_filesystem_fputcsv.asp