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: Lesen, Schreiben und Datenverarbeitung



Das CSV-Format (Comma-Separated Values) bleibt eines der beliebtesten Verfahren zum Austausch von Tabellendaten. PHP bietet integrierte Funktionen für die Arbeit mit diesem Format, was es zur idealen Wahl für den Datenimport/-export, die Integration mit CRM, Buchhaltungssystemen und die Berichterstellung macht. In diesem Artikel behandeln wir den gesamten Arbeitszyklus mit CSV: vom Öffnen einer Datei bis zur Verarbeitung komplexer Fälle mit Maskierung und Kodierungen.



Wichtige PHP-Funktionen für die Arbeit mit CSV



PHP verfügt über zwei Schlüsselfunktionen: fgetcsv() zum Lesen und fputcsv() zum Schreiben. Sie verarbeiten automatisch Trennzeichen, Anführungszeichen und Maskierungen.



CSV-Datei zeilenweise lesen



Ein einfaches Beispiel zum Lesen einer CSV-Datei mit fgetcsv():



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

if (($handle = fopen($filename, 'r')) !== false) { // Kopfzeilen lesen (erste Zeile) $headers = fgetcsv($handle, 1000, ','); if ($headers !== false) { echo "Kopfzeilen: " . implode(', ', $headers) . "<br>"; // Daten zeilenweise lesen while (($row = fgetcsv($handle, 1000, ',')) !== false) { echo "Zeile: " . implode(' | ', $row) . "<br>"; } } fclose($handle);}?>


Parameter von fgetcsv():

  • handle — Datei-Handle (Ergebnis von fopen)
  • length — maximale Zeilenlänge (empfohlen 0 für automatische Erkennung)
  • separator — Feldtrennzeichen (Standard: Komma)
  • enclosure — Anführungszeichen (Standard: doppelte Anführungszeichen)
  • escape — Escape-Zeichen (Standard: Backslash)


Daten in CSV schreiben



Die Funktion fputcsv() formatiert eine Zeile automatisch mit korrekter Maskierung:



<?php$data = [    ['ID', 'Name', 'Email', 'Registrierungsdatum'],    [1, 'Ivan Petrov', 'ivan@example.com', '2024-01-15'],    [2, 'Maria Sidorova', 'maria@example.com', '2024-02-20'],    [3, 'Alexej "Professor" Ivanov', 'alex@example.com', '2024-03-10']];

$filename = 'users.csv';

if (($handle = fopen($filename, 'w')) !== false) { // BOM für korrekte Darstellung von Kyrillisch in Excel schreiben fwrite($handle, "\\xEF\\xBB\\xBF"); foreach ($data as $row) { fputcsv($handle, $row, ';'); // Semikolon für Excel verwenden } fclose($handle); echo "Datei $filename erfolgreich erstellt!";}?>


Verarbeitung großer CSV-Dateien



Bei der Arbeit mit großen Dateien (Hunderttausende von Zeilen) ist es wichtig, die gesamte Datei nicht in den Speicher zu laden. Verwenden Sie die Stream-Verarbeitung:



<?phpfunction processLargeCSV($filename, callable $callback) {    $handle = fopen($filename, 'r');    if ($handle === false) {        throw new Exception("Konnte Datei nicht öffnen: $filename");    }        $headers = fgetcsv($handle, 0, ',');    if ($headers === false) {        fclose($handle);        throw new Exception("Leere Datei oder Fehler beim Lesen der Kopfzeilen");    }        $rowNumber = 1;    while (($row = fgetcsv($handle, 0, ',')) !== false) {        if (count($row) !== count($headers)) {            // Zeilen mit falscher Feldanzahl überspringen            continue;        }                // Kopfzeilen mit Daten kombinieren        $assocRow = array_combine($headers, $row);        call_user_func($callback, $assocRow, $rowNumber);        $rowNumber++;    }        fclose($handle);}

// Verwendung:processLargeCSV('bigdata.csv', function($row, $number) { echo "Zeile #$number: {$row['email']} - {$row['name']}<br>";});?>


Arbeiten mit verschiedenen Trennzeichen und Kodierungen



Oft werden CSV-Da

Empfehlungen