Arbeiten mit CSV in PHP: Lesen, Schreiben und Datenverarbeitung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit CSV in PHP: Vollständige Anleitung



CSV (Comma-Separated Values) ist eines der beliebtesten Formate für den Austausch von Tabellendaten. In PHP ist die Arbeit mit CSV nativ implementiert, ohne Installation zusätzlicher Bibliotheken. In diesem Artikel behandeln wir alle Aspekte: vom grundlegenden Lesen bis zur fortgeschrittenen Verarbeitung großer Dateien.



Grundlegende Funktionen für die Arbeit mit CSV



PHP bietet zwei Schlüsselfunktionen für die Arbeit mit CSV:

  • fgetcsv() — Lesen einer CSV-Zeile aus einer Datei
  • fputcsv() — Schreiben einer Zeile im CSV-Format


Zusätzlich werden Standard-Dateifunktionen verwendet: fopen(), fclose(), file().



Lesen einer CSV-Datei in PHP



Der einfachste Weg, eine CSV-Datei zu lesen, ist die Verwendung einer while-Schleife mit fgetcsv():



<?php$filename = 'data.csv';

if (($handle = fopen($filename, 'r')) !== false) { // Kopfzeilen lesen (erste Zeile) $headers = fgetcsv($handle, 1000, ','); // Restliche Zeilen lesen while (($row = fgetcsv($handle, 1000, ',')) !== false) { echo "Name: " . $row[0] . ", E-Mail: " . $row[1] . "<br>"; } fclose($handle);}?>


Parameter von fgetcsv():

  • handle — Datei-Handle
  • length — maximale Zeilenlänge (Standard 0 — keine Begrenzung)
  • separator — Feldtrennzeichen (Standard Komma)
  • enclosure — Anführungszeichen (Standard doppelte Anführungszeichen)
  • escape — Escape-Zeichen (Standard Backslash)


Lesen von CSV mit benutzerdefinierten Trennzeichen



Nicht alle CSV-Dateien verwenden ein Komma. Häufig kommen Semikolon (;) oder Tabulator vor:



<?php$handle = fopen('data.tsv', 'r');while (($row = fgetcsv($handle, 1000, "\\t")) !== false) {    print_r($row);}fclose($handle);?>


Daten in CSV schreiben



Die Funktion fputcsv() verarbeitet Escape-Zeichen und Anführungszeichen automatisch:



<?php$data = [    ['Ivan', 'ivan@example.com', 25],    ['Maria', 'maria@example.com', 30],    ['Petr', 'petr@example.com', 28]];

$handle = fopen('users.csv', 'w');

// Kopfzeilen schreibenfputcsv($handle, ['Name', 'E-Mail', 'Alter']);

// Daten schreibenforeach ($data as $row) { fputcsv($handle, $row);}

fclose($handle);echo "CSV-Datei erfolgreich erstellt!";?>


Parameter von fputcsv():

  • handle — Datei-Handle
  • fields — Array der zu schreibenden Felder
  • separator — Feldtrennzeichen
  • enclosure — Anführungszeichen
  • escape — Escape-Zeichen


Daten als CSV zum Download exportieren



Häufig muss eine CSV-Datei generiert und dem Benutzer zum Download angeboten werden:



<?php$data = [    ['Produkt', 'Preis', 'Menge'],    ['Laptop', 75000, 10],    ['Maus', 1500, 50],    ['Tastatur', 3500, 30]];

header('Content-Type: text/csv; charset=utf-8');header('Content-Disposition: attachment; filename="products.csv"');

$output = fopen('php://output', 'w');// BOM für korrekte Darstellung von Kyrillisch in Excel hinzufügenfprintf($output, chr(0xEF).chr(0xBB).chr(0xBF));

foreach ($data as $row) { fputcsv($output, $row);}

fclose($output);exit;?>


Verarbeitung großer CSV-Dateien



Bei der Arbeit mit großen Dateien (Hunderttausende von Zeilen) ist es wichtig, das Laden der gesamten Datei in den Arbeitsspeicher zu vermeiden. Verwenden Sie die Streaming-Verarbeitung:



<?phpfunction processLargeCSV($filename, $batchSize = 1000) {    $handle = fopen($filename,                    

Empfehlungen