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 Dateifputcsv()— 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-Handlelength— 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-Handlefields— Array der zu schreibenden Felderseparator— Feldtrennzeichenenclosure— Anführungszeichenescape— 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, Auch in der Bibliothek
Aufgabenplaner in Go (Golang): cron, gocron und robfig/cron
ORM für JavaScript (Node.js): Vergleich von Sequelize, TypeORM, Prisma
Caching in C++: Redis, Memcached und integrierte Lösungen
PDF-Generierung in Java: Überblick über die Bibliotheken iText, Apache PDFBox, OpenPDF