2015-04-07 9 views
7

Ich habe eine CSV-Datei mit folgendem Aufbau:PHP Verarbeitung CSV-Datei durch ein Semikolon getrennt

a; b; c,c c; d 

Wenn ich versuche, es zu verarbeiten, heißt es Offset 2 und 3 nicht definiert sind. Nahm mich eine Weile, um zu erkennen, dass es durch die , verursacht wird und habe keine Idee, wie man das löst. Wenn ich die , entferne, läuft alles gut.

Hier ist meine Verarbeitungsfunktion:

function process_csv($file) { 

    $file = fopen($file, "r"); 
    $data = array(); 

    while (!feof($file)) { 
     $csvdata = fgetcsv($file); 

     $data[] = explode(';', $csvdata[0]); 
    } 

    fclose($file); 
    return $data; 
} 

Versuchte fgetcsv($file); als fgetcsv($file, '"'); aber nicht helfen.

+5

Der Separator ist das dritte Argument auf [ 'fgetcsv'] (http://php.net/fgetcsv). – mario

+0

Danke für die Hervorhebung! –

Antwort

7

Ihr Problem ist, dass fgetcsv standardmäßig , als Trennzeichen verwendet. Sie müssen es in ; ändern. Dann werden Sie nicht mehr zu explode brauchen :)

function process_csv($file) { 

    $file = fopen($file, "r"); 
    $data = array(); 

    while (!feof($file)) { 
     $data[] = fgetcsv($file,null,';'); 
    } 

    fclose($file); 
    return $data; 
} 
+0

Wow, Schande über mich! Ich habe alles falsch gemacht. Das muss der Grund sein, warum ich kein Thema zu meinem Problem gefunden habe :) Vielen Dank, jetzt funktioniert alles wie es sein soll! –

+3

@Marc, ich würde vorschlagen, die Deklaration von $ Daten zu behalten. Erstens sind Sie sicher, dass es korrekt initialisiert wurde, zweitens, wenn keine Zeile in der Datei vorhanden ist, wird die Deklaration nie ausgeführt und der Rückgabewert ist null. –

+0

Das stimmt aber – Marc

Verwandte Themen