Csv Datei durchlaufen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Csv Datei durchlaufen

    Hallo

    Aufbau
    Trennzeichen Simikolon ;
    Textfelder stehen im doppelten Hochkomma (")
    Wenn in Textfelder ein Hochkomma vorkommt, dann würd dieses Hochkomme mit einem zweiten Hockomma gekennzeichnet.

    Ablauf
    Wie gehe ich da vor?
    Wenn ich mir überlege das ich jede Zeile einfach durchlaufen lasse und das Simikolon als Trennzeichen nehme, kann es ja passieren das in einem Textfeld auch ein Simikolon ist und es mittem im Feld getrennt würd.

    Frage
    Wie kann ich das machen, das er auch Textfelder einließt die ein Simikolon enthalten, ohne das Textfeld beim Simikolon zu trennen?
    Die Zeilen mit preg_match einlesen?
    Gut geraten ist halb gewußt.

  • #2
    da gibts doch was

    www.php.net/fgetcsv

    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
    Schön - etwas Geschichte kann ja nicht schaden.
    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

    Kommentar


    • #3
      Woher ist die Datei, hast du sie selbst erzeugt? Kannst du das nochmal wiederholen und dabei Delimiter und Enclosures ordentlich escapen (\", \? Dann klappts nämlich mit fgetcsv().

      Falls du die Datei nicht neu erzeugen kannst, wäre preg_replace() in Betracht zu ziehen um das Escapen nachzuholen. Oder einfach mal in Excel aufmachen - wenn das klappt, neu speichern mit anderen Trennzeichen.

      Ansonsten kommst du um preg_match_all() oder zeichenweises Einlesen nicht herum.

      Kommentar


      • #4
        Hi,

        Du willst fgetcsv nachbauen?

        LG
        EDIT:
        kommt davon, wenn man zwischendurch ans Telefon muss...

        Kommentar


        • #5
          @Quetschi Ja die Funktion kenne ich.

          @onemorenerd &@all
          Diese Datei ist nach einem bestimmten Standart/Reihenfolge aufgebaut und nicht von mir.

          Trennzeichen ist ein Simikolon.
          Textfelder werden mit einem Hochkomma getrennt.
          Wenn aber im Textfeld ein Hochkomma vorkommt, dann wird dieses Hochkomma mit einem zweiten Hochkomma markiert bzw. escapt.

          Beispiel
          0;0;1;0;0;"text";"noch ein ""Text"" usw.";"und a;b;c als Beispiel"

          Wie man im Beispieldatensatz sieht, kommen im letzten Textfeld Simikolons vor. Wenn ich die Datenzeile mit fgetcsv einlesen und 100 Felder haben müßte, hätte ich ja denn 103 weil im letzten Feld Simikolons enthalten sind.

          @ kuddeldaddeldu

          Na jedenfalls eine Alternative finden die sicher ist.
          Zuletzt geändert von martinm79; 24.08.2007, 13:12.
          Gut geraten ist halb gewußt.

          Kommentar


          • #6
            Ersetze mal alle Vorkommen von "" (2 Anführungszeichen) durch \" und dann versuchs mit fgetcsv(). Könnte klappen.

            Falls nicht, mußt du mit preg_match_all() ran oder einen DFA bauen.

            Kommentar


            • #7
              BTW " != Hochkomma!

              Kommentar


              • #8
                Ok, werd ich versuchen.


                Insperiert durch ein paar Beispielen auf http://www.php.net/fgetcsv
                werde ich, wenn mein erster Versuch nicht klappt, einfach abfragen ob das Feld im Array leer ist oder nicht.

                Wenn es nicht leer ist und sich am Anfang ein " befindet, denn muß am Ende auch ein " sein.
                Wenn nicht war ja ein Simikolon im Feld. Also lasse ich das Zeilen Array so lange durchlaufe bis sich am Ende ein einzelnes " befindet.

                Das müßte dann zur not klappen.


                Danke für eure Meinungen.
                Gut geraten ist halb gewußt.

                Kommentar


                • #9
                  Hab das früher immer benutzt um ne Excel-Tabelle in ne ordentliche html-Tabelle zu übertragen - hat immer gut funktioniert.
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar

                  Lädt...
                  X