PHP: Auslesen einer CSV Datei, Zeile für Zeile

Marc Wagner, Oktober 24, 2022
Inhaltsverzeichnis

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.

Benutzerbild von Marc Wagner
Marc Wagner

Hi Marc here. I'm the founder of Forge12 Interactive and have been passionate about building websites, online stores, applications and SaaS solutions for businesses for over 20 years. Before founding the company, I already worked in publicly listed companies and acquired all kinds of knowledge. Now I want to pass this knowledge on to my customers.

Ähnliche Beiträge

Comments

Hinterlasse einen Kommentar