Arbeiten mit CSV in PHP: Vollständige Anleitung
CSV (Comma-Separated Values) ist eines der beliebtesten Formate für den Austausch von Tabellendaten. PHP bietet sowohl integrierte Funktionen für die Arbeit mit CSV als auch leistungsstarke Drittanbieter-Bibliotheken. In diesem Artikel behandeln wir alle grundlegenden Methoden zum Lesen, Schreiben und Verarbeiten von CSV-Dateien in PHP.
Integrierte PHP-Funktionen für die Arbeit mit CSV
PHP stellt mehrere integrierte Funktionen bereit, die die Arbeit mit CSV-Dateien ohne Installation zusätzlicher Bibliotheken ermöglichen. Die wichtigsten sind:
fgetcsv()— Liest eine Zeile aus einer Datei und parst sie in ein Arrayfputcsv()— Schreibt ein Array im CSV-Format in eine Dateistr_getcsv()— Parst einen CSV-String in ein Array
Lesen einer CSV-Datei mit fgetcsv
Die Funktion fgetcsv() liest eine einzelne Zeile aus einer geöffneten Datei und gibt sie als Array zurück. Beispiel für das Lesen einer gesamten Datei:
<?php$filename = 'data.csv';
if (($handle = fopen($filename, 'r')) !== false) { while (($data = fgetcsv($handle, 1000, ',')) !== false) { // $data ist ein Array mit den Daten der Zeile echo implode(' | ', $data) . ""; } fclose($handle);}?>Parameter der Funktion fgetcsv():
handle— Datei-Handlelength— Maximale Zeilenlänge (normalerweise 0 oder 1000)separator— Feldtrennzeichen (Standard: Komma)enclosure— Zeichen für die Feldumrahmung (Standard: doppeltes Anführungszeichen)escape— Escape-Zeichen (Standard: Backslash)
Daten in eine CSV-Datei schreiben
Zum Schreiben wird die Funktion fputcsv() verwendet. Sie nimmt ein Array entgegen und wandelt es in einen CSV-String um:
<?php$data = [ ['Name', 'Alter', 'Stadt'], ['Ivan', 25, 'Moskau'], ['Maria', 30, 'Sankt Petersburg'],];
$filename = 'output.csv';$handle = fopen($filename, 'w');
foreach ($data as $row) { fputcsv($handle, $row, ';', '"');}
fclose($handle);echo "Datei $filename erfolgreich erstellt!";?>In diesem Beispiel verwenden wir das Semikolon (;) als Trennzeichen, was in russischsprachigen CSV-Dateien häufig vorkommt.
Verarbeitung großer CSV-Dateien
Bei der Arbeit mit großen Dateien (Hunderttausende von Zeilen) ist es wichtig, nicht die gesamte Datei in den Speicher zu laden. Verwenden Sie zeilenweises Lesen:
<?phpfunction processLargeCSV($filename) { $handle = fopen($filename, 'r'); // Überspringen der Kopfzeile, falls vorhanden $header = fgetcsv($handle); while (($row = fgetcsv($handle)) !== false) { // Jede Zeile verarbeiten $processed = array_map('trim', $row); // Hier kann Ihre Verarbeitungslogik stehen yield $processed; // Generator verwenden } fclose($handle);}
// Verwendungforeach (processLargeCSV('bigdata.csv') as $row) { // Mit jeder Zeile einzeln arbeiten echo "Zeile verarbeitet: " . implode(',', $row) . "";}?>Die Verwendung von Generatoren (yield) ermöglicht die Verarbeitung von Dateien beliebiger Größe ohne Speicherüberlauf.
Bibliothek League\\Csv für fortgeschrittene Arbeit
Für komplexere Aufgaben wird die Verwendung der Bibliothek league/csv empfohlen. Sie bietet eine benutzerfreundliche objektorientierte Schnittstelle und zahlreiche zusätzliche Funktionen.
Installation über Composer:
composer require league/csvAnwendungsbeispiel:
<?phprequire 'vendor/autoload.php';
use League\\Csv\\Reader;use League\\Csv\\Writer;
// CSV lesen$csv = Reader::createFromPath('data.csv', 'r');$csv->setHeaderOffset(0); // Erste Zeile ist die Kopfzeile
// Alle Datensätze als asso Auch in der Bibliothek
Bibliothek kotlinx.serialization für JSON-Verarbeitung in Kotlin
Quartz Scheduler Java: Komplettes Tutorial mit Beispielen
Aufgabenwarteschlangen in Java: ExecutorService und ThreadPoolExecutor
Aufgabenplaner in Node.js: node-cron, node-schedule und Bull
Arbeiten mit XML in C# (.NET): vollständiger Leitfaden zum Parsen und Erstellen