tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
1471
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Kopfballstar Kopfballstar ist offline Mitglied Brokat
    Registriert seit
    Jan 2002
    Beiträge
    481
    Hallo,

    folgendes Problem tritt auf. Ich lese eine Datei aus mit:

    $Dateizeiger = fopen($csv_file , "r");

    und dann

    while(($Daten = fgetcsv($Dateizeiger, 1000, ";")) !== FALSE)
    {...}

    Wie man sieht ist das Trennzeichen ein Semikolon und wird auch in der Funktion fgetcsv so angegeben. Aber blöderweise seperiert diese Funktion erstmal gar nicht richtig, sondern es wird ein Array der Größe 2 erstellt. An Position 1 befindet sich der gesamte String des CSV File (also xyz; xyz; xyz; ...). Erst nach dem letzten Semikolon wird separiert und somit ist Position 2 des Array leer.

    Nun teile ich den String im Array[0] mit EXPLODE.

    explode(";", $Daten[0])

    Aber dadurch wird der String nicht richtig getrennt. Er wird zwar nach einem Semikolon getrennt, aber eben auch nach einem Komma ( "," ). Wieso das? In dem String kommt auch genau einmal ein "," vor, dort darf aber nicht getrennt werden.

    Zähle ich die Kommas mit

    echo substr_count($Daten[0], ',');

    wird dann komischerweise keins gefunden...
     

  2. #2
    Registriert seit
    May 2007
    Ort
    Köln / Bonn
    Beiträge
    844
    Blog-Einträge
    4
    Do solltest wohl nicht explode(";", $Daten[0]) sondern explode(";", $Daten) machen
     
    Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.

  3. #3
    Kopfballstar Kopfballstar ist offline Mitglied Brokat
    Registriert seit
    Jan 2002
    Beiträge
    481
    Ok danke, das klappt.
    Aber jetzt stelle ich fest,m das Problem liegt def. schon vorher, also bei fgetcsv. Da wird das Komma als Separator benutzt obwohl ich Semikolon angebe. Das darf nicht sein.
     

  4. #4
    Registriert seit
    May 2007
    Ort
    Köln / Bonn
    Beiträge
    844
    Blog-Einträge
    4
    Hmm wenn du weiterhin Probleme damit hast kannst du ja eventuell auch darauf verzichten und ein einfaches csv einlesen realisieren mit 2 Zeilen code:

    PHP-Code:
    $csv file('datei.csv');
    foreach (
    $csv as $k => $r$csv[$k] = explode(";"$r);

    print_r($csv); 
     
    Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.

  5. #5
    Kopfballstar Kopfballstar ist offline Mitglied Brokat
    Registriert seit
    Jan 2002
    Beiträge
    481
    Hallo,

    danke. Hab das mal ausprobiert und auf den ersten Blick bekomme ich mein gewünschtes Ergebnis! Auch das Koma Problem besteht dann nicht.

    Grüße
     

  6. #6
    Kopfballstar Kopfballstar ist offline Mitglied Brokat
    Registriert seit
    Jan 2002
    Beiträge
    481
    Nein, verdammt. Das Koma Problem besteht doch noch. Es wird als Seperator erkannt.
     

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 25.08.10, 19:13
  2. Antworten: 3
    Letzter Beitrag: 09.11.09, 19:05
  3. Eingabe in der timeline: "time*100" - bei Effekt "turbulentes Versetzen"-"Evolution"
    Von MTMonline im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 2
    Letzter Beitrag: 25.04.08, 09:49
  4. Antworten: 14
    Letzter Beitrag: 23.03.07, 09:23
  5. Finder methods + JBoss + Was expecting one of: "CONCAT" "SUBSTRING" ... "(" ... <STRI
    Von cengizhdde im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 6
    Letzter Beitrag: 27.05.05, 15:29