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

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.

Hier klicken, um den Beitrag zu bewerten
[Gesamt: 1 Durchschnitt: 5]

Hinterlasse einen Kommentar

Titel