frankx: explode und zeilenende - csv

Hallo,

eine csv Datei, die innerhalb der Felder noch Zeilenumbrüche hat:

"Feld11";"Feld12";"Feld13
mehr Inhalt
Ende Feld13";"Feld14" //!kein Semikolon mehr, Zeile zuende
"Feld21"; etc.

wie lässt sich die mit PHP auseinandernehmen, bzw. mit explode bekomme ich die Felder anhand der Semikola auseinander, aber wie überhaupt erwische/benenne/erfasse ich den Zeilenumbruch?

Dank, Frankx

  1. Hello,

    eine csv Datei, die innerhalb der Felder noch Zeilenumbrüche hat:
    wie lässt sich die mit PHP auseinandernehmen,

    nur mit einer Schleife und fgetcsv().

    $_grid = array();
      while(is_array($_rec = fgetcsv(  ...  ))
      {
        $_grid[] = $_rec;
      }

    und dann lass Dir mal mit

    print_r($_grid);

    die Tabelle ausgeben.

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. Hallo harzlicher Tom,

      besten Dank, für meine Zwecke bringt dann:

        
        $_grid = array();  
        $handle = fopen("Export.csv", "r");  
        while(is_array($_rec = fgetcsv($handle,1000,";",'"'))) {  
          $_grid[] = $_rec;  
        }  
        print_r($_grid);  
      
      

      ein prima ergebnis. In dem einen Feld sind die Zeilenumbrüche dann richtigerweise noch enthalten. Kannst Du mir sagen, wie die mit PHP ansprechbar sind?

      Dank Frankx

      1. Hello,

        ein prima ergebnis. In dem einen Feld sind die Zeilenumbrüche dann richtigerweise noch enthalten. Kannst Du mir sagen, wie die mit PHP ansprechbar sind?

        Es bleiben sowohl die Zeilenumbrüche, als auch die im Text enthaltenen Begrenzerzeichen (") erhalten, wenn man sie richtig maskiert hat bei der Erstellung der CSV-Datei. Dazu müssen sie gedoppelt werden.

        Was willst Du denn mit den Zeilenumbrüchen jetzt machen?

        Sollen die Daten nur ausgegeben werden im Browser?
        Dann solltest Du z.B. nl2br(htmlemtities($text,ENT_QUOTES)) benutzen.

        Harzliche Grüße vom Berg
        http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

        1. Hallo harzlicher Tom,

          Danke. nl2br ist prima; hier interessierte mich aber mal grundsätzlich, wie ich dieses nicht sichtbare Zeichen anpacken kann, zB. um in dem Fall die Zeilenumbrüche schlicht zu entfernen (issich Verwendungszweck von Bankauszug und die Zeilenumbrüche machen keinen Sinn). Also dachte ich sie mit str_replace zu vernichten.

          Dank Frankx

          1. Hello,

            Danke. nl2br ist prima; hier interessierte mich aber mal grundsätzlich, wie ich dieses nicht sichtbare Zeichen anpacken kann, zB. um in dem Fall die Zeilenumbrüche schlicht zu entfernen (issich Verwendungszweck von Bankauszug und die Zeilenumbrüche machen keinen Sinn). Also dachte ich sie mit str_replace zu vernichten.

            Ach, Sparkasse?
            Na, dann empfehle ich str_replace()
            Das Zeichen kannst Du dann entweder als

            $CRLF = chr(13).chr(10);       WinDOS
            $CR =   chr(13);               MAC
            $LF =   chr(10);               Unix/Linux

            schreiben.
            In PHP geht auch

            $CRLF = "\n\r";
            $CR =   "\r";
            $LF =   "\n";

            Das ist aber nicht immer und überall identisch, da die Mnemonics ggf. noch ein weiteres mal transformiert werden, je nach Betriebsssystem und Applikation. In PERL ist es mWn so.

            Und dann müssten die alle der Reihe nach ersetzt werden. Du musst also so tun, als könnten sie alle drei im String das Zeilenschaltungszeichen darstellen, sonst wird die Ersetzung unsicher. Das geht bei str_replace auch mit einem Array von Searchstrings.

            Harzliche Grüße vom Berg
            http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau

            1. Hallo Tom,

              besten Dank. Issich Voksbank. Hatte nicht gedacht, dass "\n" als String gefunden wird. Prima, klappt damit und auch mit chr(10) und dass zur Sicherheit ein Array genommen werden kann, hab ich jetzt auch gecheckt.

              Schönen Tag noch,

              Frankx