Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как записать данные в CSV-файл

Короткий ответ

Откройте файл для записи и передавайте строки в fputcsv():

<?php
 
$file = sys_get_temp_dir() . '/recipe-export.csv';
$handle = fopen($file, 'w');
 
fputcsv($handle, ['name', 'price'], ',', '"', '');
fputcsv($handle, ['Tea', 250], ',', '"', '');
fputcsv($handle, ['Coffee, ground', 400], ',', '"', '');
 
fclose($handle);
 
echo file_get_contents($file);

Результат:

name,price
Tea,250
"Coffee, ground",400

Заголовки из ключей

Для массива записей первую строку берут из ключей:

<?php
 
$rows = [['name' => 'Tea', 'price' => 250], ['name' => 'Juice', 'price' => 180]];
 
$file = sys_get_temp_dir() . '/recipe-export.csv';
$handle = fopen($file, 'w');
 
fputcsv($handle, array_keys($rows[0]), ',', '"', '');
 
foreach ($rows as $row) {
    fputcsv($handle, $row, ',', '"', '');
}
 
fclose($handle);
 
echo file_get_contents($file);

Результат:

name,price
Tea,250
Juice,180

Кириллица в Excel

Чтобы Excel правильно открыл файл в UTF-8, запишите в самое начало три байта — метку BOM: fwrite($handle, "\xEF\xBB\xBF").

Функции из этого ответа

  • fputcsv — Записывает массив в файл строкой CSV.
  • fopen — Открывает файл для чтения или записи по частям.
  • fgetcsv — Читает строку файла CSV и разбирает её на поля.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.