PHP:
Arbeiten mit CSV
Wie:
PHP bietet eingebaute Funktionen zur Handhabung von CSV-Dateien, wodurch es unkompliziert wird, aus diesen Dateien zu lesen und in sie zu schreiben, ohne dass Drittanbieterbibliotheken benötigt werden. Hier sind Beispiele, um Ihnen den Einstieg zu erleichtern:
Lesen einer CSV-Datei
Sie können eine CSV-Datei öffnen und ihren Inhalt mittels fopen()
in Kombination mit fgetcsv()
lesen:
<?php
$filename = 'data.csv';
$handle = fopen($filename, "r");
if ($handle !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "Anzahl der Felder in Zeile: $num\n";
for ($c = 0; $c < $num; $c++) {
echo $data[$c] . "\n";
}
}
fclose($handle);
}
?>
Dieses Skript druckt die Anzahl der Felder in jeder Zeile gefolgt vom Inhalt jedes Feldes.
Schreiben in eine CSV-Datei
Um in eine CSV-Datei zu schreiben, verwenden Sie fopen()
im Schreibmodus (w
) und fputcsv()
:
<?php
$list = [
['ID', 'Name', 'Email'],
[1, 'John Doe', '[email protected]'],
[2, 'Jane Doe', '[email protected]']
];
$handle = fopen('users.csv', 'w');
foreach ($list as $row) {
fputcsv($handle, $row);
}
fclose($handle);
?>
Dieses Skript erstellt eine Datei namens users.csv
und schreibt die Kopfzeile sowie zwei Datensätze in sie.
Verwendung einer Bibliothek: League\Csv
Für eine fortgeschrittenere Handhabung von CSV-Daten bietet die Bibliothek League\Csv
einen robusten Satz von Funktionen. Nach der Installation über Composer (composer require league/csv
) können Sie sie flexibler zum Lesen und Schreiben von CSV-Daten verwenden.
Lesen mit League\Csv
<?php
require 'vendor/autoload.php';
use League\Csv\Reader;
$csv = Reader::createFromPath('data.csv', 'r');
$csv->setHeaderOffset(0); // Setzen Sie dies, wenn Sie die erste Zeile als Kopfzeile verwenden möchten
$results = $csv->getRecords();
foreach ($results as $row) {
print_r($row);
}
?>
Dieses Skript liest data.csv
, behandelt die erste Zeile als Spaltenüberschriften und gibt jede Zeile als assoziatives Array aus.
Schreiben mit League\Csv
<?php
require 'vendor/autoload.php';
use League\Csv\Writer;
$csv = Writer::createFromPath('users_new.csv', 'w+');
$csv->insertOne(['ID', 'Name', 'Email']);
$csv->insertAll([
[3, 'Alex Doe', '[email protected]'],
[4, 'Anna Smith', '[email protected]']
]);
echo "Erfolgreich in users_new.csv geschrieben.";
?>
Das erstellt users_new.csv
und schreibt eine Kopfzeile gefolgt von zwei Datenreihen.