fputcsv în PHP

Scrie un tablou ca rând într-un fișier CSV, cu ghilimele puse automat unde e nevoie.

Sintaxă
fputcsv($stream, array $fields, string $separator = ',', string $enclosure = '"', string $escape = '\\', string $eol = '\n'): int|false

Ce face fputcsv

fputcsv transformă un tablou într-un rând CSV corect: pune ghilimele în jurul valorilor care conțin separatorul, ghilimele sau linii noi și adaugă linia nouă la final.

Pentru fișiere deschise în Excel în română, folosește ; ca separator și scrie la început caracterele BOM ("\xEF\xBB\xBF"), ca diacriticele să apară corect. Ca la fgetcsv, din PHP 8.4 dai explicit parametrul $escape.

Parametri

Parametru Descriere
$stream Resursa returnată de fopen.
$fields Valorile rândului.
$separator Opțional. Caracterul dintre coloane.
$enclosure Opțional. Caracterul pentru ghilimele.
$escape Caracterul de escape. Dă-l explicit, de obicei "".
$eol Opțional (PHP 8.1+). Sfârșitul de linie, de exemplu "\r\n".

Ce returnează

Lungimea rândului scris sau false la eroare.

Exemple

Exemplul 1: Export de clienți

Valoarea cu virgulă a primit automat ghilimele.

<?php
$clienti = [
    ["nume", "oras", "total"],
    ["Ana", "Iași", 250],
    ["Popescu, Ion", "Cluj", 1200.5],
];

$f = fopen("clienti.csv", "w");
foreach ($clienti as $rand) {
    fputcsv($f, $rand, escape: "");
}
fclose($f);

echo file_get_contents("clienti.csv");

Rezultat

nume,oras,total
Ana,Iași,250
"Popescu, Ion",Cluj,1200.5

Exemplul 2: CSV pentru Excel în română

BOM-ul nu se vede în editor, dar îi spune lui Excel că fișierul este UTF-8.

<?php
$f = fopen("comenzi.csv", "w");
fwrite($f, "\xEF\xBB\xBF");
fputcsv($f, ["Produs", "Preț"], ";", escape: "");
fputcsv($f, ["Brânză", "24,50"], ";", escape: "");
fclose($f);

echo substr(file_get_contents("comenzi.csv"), 3);

Rezultat

Produs;Preț
Brânză;24,50

Greșeli frecvente

  • Construiești rândul cu implode(",", $rand). Valorile care conțin virgulă sau ghilimele strică structura fișierului.
  • Nu dai parametrul $escape și în PHP 8.4+ primești un mesaj Deprecated.

Comenzi înrudite

  • fgetcsv: Citește o linie dintr-un fișier CSV și o împarte în coloane.
  • fopen / fclose: Deschide un fișier pentru citire sau scriere și returnează o resursă; fclose îl închide.
  • fwrite / fputs: Scrie un text într-un fișier deschis cu fopen. fputs este același lucru, cu alt nume.