PHP: Auslesen einer CSV Datei, Zeile für Zeile
Marc Wagner
Oktober 24, 2022
PHP ermöglicht es dir, mittels fgetcsv CSV Dateien einfach und unkompliziert Zeile für Zeile auszulesen.
fgetcsv #
Wie das Ganze mit fgetcsv funktioniert, zeigt das folgende Beispiel:
/**
* Auslesen einer CSV Datei mit fgetcsv
*
* @param string $path_to_csv_file Der Pfad zur CSV Datei
* @param array &$result Speichert die Daten in der Referenzvariabel.
*/
function read_csv(string $path_to_csv_file, array &$result): bool{
$handle = fopen($path_to_csv_file, 'r');
if(!$handle){
return false;
}
while(false !== ($data = fgetcsv($handle, null, ';'))){
$result[] = $data;
}
return true;
}
$response = [];
if(!read_csv('/pfad/zur/datei.csv', $response)){
echo "CSV Datei konnte nicht geöffnet werden.";
}
foreach($response as $row_number => $data){
echo $row_number.': '.$data[0];
}
Die Funktion read_csv() übernimmt dabei das öffnen der CSV Datei und das auslesen der einzelnen Zeilen. Das Ergebnis wird anschließend in der Referenz $result hinterlegt. Die Daten werden dabei bewusst in der Referenz hinterlegt, anstatt diese als Array zurückzugeben. Das ermöglicht es uns, zu bestimmen, ob die Funktion korrekt ausgeführt wurde, oder aber z.B. die Datei nicht existiert.
In dem Beispiel oben haben wir für die Funktion fgetcsv() das Trennzeichen ‘;’ angegeben. Dieses kann abweichen und muss natürlich abhängig von der CSV Datei gewählt werden.
Ihr solltet beim Lesen der Datei darauf achten, dass diese ggf. ein BOM (Byte Order Mark) enthalten. Falls dies der Fall ist, empfiehlt es sich, die Datei zunächst über z.B. Notepad++ zu konvertieren.
Fazit #
In PHP lassen sich CSV Dateien schnell und unkompliziert auslesen und bearbeiten und z.B. in Datenbanken importieren. Abhängig von der Größe der Datei kann es jedoch vorkommen, dass die Konfiguration für die “max_execution_time” in der PHP.ini angepasst werden muss. CSV Dateien eignen sich hervorragend, um Daten schnell und einfach zwischen verschiedenen Systemen zu übertragen. Dank fgetcsv() können CSV Dateien Zeile für Zeile ausgelesen werden.
Artikel von:
Marc Wagner
Hallo, Marc hier. Ich bin der Gründer von Forge12 Interactive und bereits seit über 20 Jahren leidenschaftlich dabei Webseiten, Onlineshops, Anwendungen und SaaS-Lösungen für Unternehmen zu entwickeln. Vor der Gründung habe ich bereits in Börsen notierten Unternehmen gearbeitet und mir allerlei Wissen angeeignet. Dieses Wissen möchte ich nun an meine Kunden weitergeben.