fputcsv
funkcja
Formatuje tablicę jako wiersz CSV i zapisuje go do otwartego uchwytu pliku. Zwraca długość zapisanego stringa lub false.
fputcsv(resource $stream, array $fields, string $separator = ",", string $enclosure = "\"", string $escape = "\\", string $eol = "\n"): int|false
fputcsv przyjmuje tablicę wartości, formatuje je jako jeden wiersz CSV (dodając cudzysłowy tam, gdzie to konieczne) i zapisuje do strumienia. Zwraca liczbę zapisanych bajtów lub false przy błędzie.
Jeśli któreś pole zawiera separator, znak końca linii lub znak cytowania, PHP automatycznie otoczy je znakiem $enclosure. Domyślny separator to przecinek — zmień go na średnik dla plików zgodnych z polskim Excelem. Parametr $escape warto ustawić na '' (pusty string), co wyłącza starą obsługę znaku ucieczki backslash i daje wynik zgodny z RFC 4180.
<?php
declare(strict_types=1);
$sciezka = sys_get_temp_dir() . '/eksport.csv';
$uchwyt = fopen($sciezka, 'w');
if ($uchwyt === false) {
throw new \RuntimeException('Nie można otworzyć pliku do zapisu.');
}
$wiersze = [
['Imię', 'Nazwisko', 'Miasto'],
['Jan', 'Kowalski', 'Warszawa'],
['Anna', 'Nowak', 'Kraków'],
];
foreach ($wiersze as $wiersz) {
fputcsv($uchwyt, $wiersz, ';', '"', '');
}
fclose($uchwyt);
echo file_get_contents($sciezka);
unlink($sciezka);