Linuchs: CSV Datei erstellen - Zeilenumbruch im Textfeld

Hallo,

eine vorhandene Liste soll Kunden zwecks Übernahme in deren (nicht näher bekannten) Programm zur Verfügung gestellt werden.

Angedacht ist, dass die eine CSV-Datei in Excel importieren können.

Nun können in einem zu übergebenden Textfeld alle möglichen UTF-8 Zeichen stehen inklusive der CSV-Trennzeichen. Das wäre standardmäßig ein , Komma?

Wie müsste ich dann CSV-konform das Komma im Text maskieren?

Und woher weiss das empfangende Programm, wo ein Datensatz zuende ist, wenn ein Textfeld über mehrere Zeilen geht - oder ist auch der Zeilenumbruch zu maskieren?

Es geht um CSV-Standard, irgendwelche Absprachen können mit den Kunden nicht getroffen werden. Es sind zu viele und im Zweifel haben die von EDV wenig Ahnung.

Linuchs

  1. Hi,

    Wie müsste ich dann CSV-konform das Komma im Text maskieren?

    http://de.wikipedia.org/wiki/CSV_(Dateiformat)#Dateiaufbau

    Und woher weiss das empfangende Programm, wo ein Datensatz zuende ist, wenn ein Textfeld über mehrere Zeilen geht - oder ist auch der Zeilenumbruch zu maskieren?

    S.o.

    Es geht um CSV-Standard, irgendwelche Absprachen können mit den Kunden nicht getroffen werden. Es sind zu viele und im Zweifel haben die von EDV wenig Ahnung.

    Und warum hast du nicht wenigstens *etwas* Recherche betrieben vor deiner Frage?

    MfG ChrisB

    --
    Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
    1. Hallo ChrisB,

      Und warum hast du nicht wenigstens *etwas* Recherche betrieben vor deiner Frage?

      Sorry. Hatte das Thema schon mal "auf dem Tisch" und erinnere mich, dass es an den Textfeldern mit Zeilenumbruch scheiterte. Deshalb hier die direkte Frage.

      Linuchs

  2. Hello,

    kleine Ergänzung zu ChrisB und der Wikipedia:

    Ich habe mal eine Applikation erstellt, die automatsich Messergebnisse im Excel-Format im Web für die User bereitgestellt. Bei Klick auf den Link wurde per ActiceX (MIME-Type-Ergekennung) automatisch Exel geladen und das File importiert.

    Dabei hat sich schlussendlich ergeben, dass als Fieldseperator nur der Tabulator geeignet war. Da bot es sich dann auch an, sofort utf-8 für die Codierung zu benutzen, da das in Excel scheinbar sowieso eng miteinander verknüpft ist. Außerdem daßen die User in USA, GB, F und D, hatten also alle ander Sprachversionen der Excel-Software. Nun sollte man denken, dass das irrelevant ist, war es aber schinbar doch nicht.

    Ergo:
    Nimm den Tabulator als Seperator.
    Schließe alle Felder in Anführungszeichen ein, zumindest die Textfelder *)
    Verdoppele alle Anführungszeichen, die in Textfeldern vorkommen.

    *) 'eigentlich' kennt das CSV-Format zwei Typen: Zahlen und Texte. Zahlen stehen ohne Anführungszeichen, Texte mit. Aber CSV-Interpreter ist ungleich CSV-Interpreter.

    Ich habe vergessen, welche Excels (Sprachversion) das berücksichtigt haben und welche nicht. Ich glaube, die US-Version konnte es.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bikers-lodge.com
    1. Hi,

      *) 'eigentlich' kennt das CSV-Format zwei Typen: Zahlen und Texte. Zahlen stehen ohne Anführungszeichen, Texte mit. Aber CSV-Interpreter ist ungleich CSV-Interpreter.

      stimmt, und AFAIR hat es auch bei Excel Vorteile, wenn man numerische Felder ohne Anführungszeichen schreibt: Beim CSV-Import formatiert Excel nämlich alle Felder, die in Anführungszeichen stehen, gleich mal als "Text". Das schränkt die nachträgliche Verwertbarkeit (Formeln, Berechnungen) stark ein.

      Ich habe vergessen, welche Excels (Sprachversion) das berücksichtigt haben und welche nicht. Ich glaube, die US-Version konnte es.

      Hm, ich meine, die deutsche auch.

      Ciao,
       Martin

      --
      Wer es in einem Unternehmen zu etwas bringen will, muss so tun, als hätte er es schon zu etwas gebracht.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. Hello,

        *) 'eigentlich' kennt das CSV-Format zwei Typen: Zahlen und Texte. Zahlen stehen ohne Anführungszeichen, Texte mit. Aber CSV-Interpreter ist ungleich CSV-Interpreter.

        stimmt, und AFAIR hat es auch bei Excel Vorteile, wenn man numerische Felder ohne Anführungszeichen schreibt: Beim CSV-Import formatiert Excel nämlich alle Felder, die in Anführungszeichen stehen, gleich mal als "Text". Das schränkt die nachträgliche Verwertbarkeit (Formeln, Berechnungen) stark ein.

        Ja, darum hatte ich es erwähnt.

        Aber beim "Import entfernter Daten" über die Webschnittstelle von Excel hat es leider nicht funktioniert bei der deutschen Version bis 2003. Neueres hatte ich damals nicht.

        Ich habe vergessen, welche Excels (Sprachversion) das berücksichtigt haben und welche nicht. Ich glaube, die US-Version konnte es.

        Hm, ich meine, die deutsche auch.

        Nur beim direkten Einbinden, nicht bei der Webabfrage (s. o.). Da konnte es nur eine von vieren.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bikers-lodge.com
        1. Hi,

          Aber beim "Import entfernter Daten" über die Webschnittstelle von Excel hat es leider nicht funktioniert

          huch, ich wäre auch nicht auf die Idee gekommen, es so kompliziert zu machen. Doppelklick auf die CSV-Datei, Excel geht auf und der CSV-Import-Assistent poppt auf. So kenne ich es jedenfalls aus Office-Versionen bis 2003 und von LibreOffice. Beim Office 2007 ist es sehr komplziert, da habe ich schon ein paarmal mitbekommen, wie sich der Kollege einen abgebrochen hat.

          Ich habe vergessen, welche Excels (Sprachversion) das berücksichtigt haben und welche nicht. Ich glaube, die US-Version konnte es.
          Hm, ich meine, die deutsche auch.
          Nur beim direkten Einbinden, nicht bei der Webabfrage (s. o.).

          Na klar, warum einfach, wenn auch umständlich geht ... ;-)

          Ciao,
           Martin

          --
          Chef:         Zum vierten Mal in dieser Woche erwische ich Sie nun schon beim Zuspätkommen. Was haben Sie dazu zu sagen?
          Angestellter: Dann muss heute Donnerstag sein.
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          1. Hello,

            Na klar, warum einfach, wenn auch umständlich geht ... ;-)

            Manchmal ist "umständlich" eben gewünscht.

            Andernfalls hätte man die Daten erst zum Download anbieten müssen, die User hätten sie zwischenspeichern müssen und dann erst in Excel importieren können.

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bikers-lodge.com
            1. Hi,

              Manchmal ist "umständlich" eben gewünscht.

              ja, scheint so.

              Andernfalls hätte man die Daten erst zum Download anbieten müssen, die User hätten sie zwischenspeichern müssen und dann erst in Excel importieren können.

              Das wäre der Weg, den ich als Nutzer intuitiv gewählt hätte.

              Ciao,
               Martin

              --
              Männer haben nur eine Angst: Die Angst, kein Mann zu sein.
                (Liv Tyler, US-Schauspielerin)
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              1. Hello,

                Manchmal ist "umständlich" eben gewünscht.

                ja, scheint so.

                Andernfalls hätte man die Daten erst zum Download anbieten müssen, die User hätten sie zwischenspeichern müssen und dann erst in Excel importieren können.

                Das wäre der Weg, den ich als Nutzer intuitiv gewählt hätte.

                Klar, ich auch. Aber dazu gehört (wenn auch wenig) Anwenderwissen und -dürfen.

                <zynismus>Aber in Zeiten von JavaScript, AJAX, ActiveX und all dem weiteren Kram, was modern ist und deshalb benutzt werden muss man das doch so machen</zynismus>

                Liebe Grüße aus dem schönen Oberharz

                Tom vom Berg

                --
                 ☻_
                /▌
                / \ Nur selber lernen macht schlau
                http://bikers-lodge.com
    2. Hallo Tom,

      Ergo:
      Nimm den Tabulator als Seperator.
      Schließe alle Felder in Anführungszeichen ein, zumindest die Textfelder *)
      Verdoppele alle Anführungszeichen, die in Textfeldern vorkommen.

      Habe ich jetzt gemacht.

      Im Teststadium gebe ich die CSV-Datei erstmal als HTML-Datei auf den Bildschirm, weil CSV über ein vorhandenes Template generiert wird (später zum Download). Da kann ich bequem sehen, ob die Werte wie gewünscht ausgegeben werden. Mein Zielprogramm ist LibreOffice Calc

      Nun kopiere ich den sichbaren Text aus dem Browser in die Zwischenablage und sehe - LibreOffice Calc hat keine Importfunktion.

      Dennoch kann ich eine Zelle oder eine Zeile aktivieren und dann [Strg][V]. Das Ergebnis ist, dass jede CSV-Zeile in einer Zelle landet, also A1, A2, ... Das heißt, der Tabulator führt nicht dazu, in die nächste Zelle zu springen.

      Habe das auch mit dem ;-Trenner versucht und mit dem Quellcode.

      Linuchs

      1. Hello,

        Nun kopiere ich den sichbaren Text aus dem Browser in die Zwischenablage und sehe - LibreOffice Calc hat keine Importfunktion.

        Naja: https://help.libreoffice.org/Common/Importing_and_Exporting_Data_in_Text_Format/de

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bikers-lodge.com
        1. Hello,

          Hello,

          Nun kopiere ich den sichbaren Text aus dem Browser in die Zwischenablage und sehe - LibreOffice Calc hat keine Importfunktion.

          Naja: https://help.libreoffice.org/Common/Importing_and_Exporting_Data_in_Text_Format/de

          Und noch einer: https://help.libreoffice.org/Calc/Inserting_External_Data_in_Table_WebQuery/de

          Da kann man bestimmt noch mehr Anleitungen dazu finden :-)

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bikers-lodge.com
          1. Hello,

            Hello,

            Hello,

            Nun kopiere ich den sichbaren Text aus dem Browser in die Zwischenablage und sehe - LibreOffice Calc hat keine Importfunktion.

            Naja: https://help.libreoffice.org/Common/Importing_and_Exporting_Data_in_Text_Format/de

            Und noch einer: https://help.libreoffice.org/Calc/Inserting_External_Data_in_Table_WebQuery/de

            Da kann man bestimmt noch mehr Anleitungen dazu finden :-)

            Also die obige Anleitung funktioniert bei mir so ungefähr.
            Leider ist mein älteres OpenOffice scheinbar noch buggy. Ich kann den OK-Button nicht drücken.

            Allerdings kommt mit etwas Trixen die Vorschau im Import-Manager und es wird alles richtig erkannt.

            Bei Excel funktioniert so alles.

              
              
            <?php   ### db_get_csv.php ### utf-8 ### ÄÖÜäöü  
              
              
                ## da brauchst Du natürlich Deine eigenen Funktionen und Werte :-) ##  
              
                include ('../../includes/functions.php');  
                include ('../../includes/config.php');  
              
                $con = get_db_con();  
                $sql =  "SELECT * FROM `testdatei`";  
                $result = mysqli_query($con, $sql) or die($sql . '<br>' . mysql_error());  
              
                $_list = array();  
                while ($_row = mysqli_fetch_assoc($result))  
                {  
            	$_list[] = $_row;  
                }  
            	  
                $fp = fopen('php://output', 'wb');  
              
                header('Content-Type: application/msexcel; Charset=utf-8');  
              
                foreach($_list as $key => $value)  
                {  
            	fputcsv($fp, $value, "\t");  
                }	  
              
            ?>  
            
            

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bikers-lodge.com
            1. Hello,

              Bei Excel funktioniert so alles.

              Wenn ich den Import über den Browser anstoße, also die zugehörige URL des Scriptes aufrufe, kann ich die Daten auch mit OpenOfficeOrg-Calc einwandfrei importieren.

              Probier es doch mal aus.

              <?php   ### db_get_csv.php ### utf-8 ### ÄÖÜäöü

              ## da brauchst Du natürlich Deine eigenen Funktionen und Werte :-) ##

              include ('../../includes/functions.php');
                  include ('../../includes/config.php');

              $con = get_db_con();
                  $sql =  "SELECT * FROM testdatei";
                  $result = mysqli_query($con, $sql) or die($sql . '<br>' . mysql_error());

              $_list = array();
                  while ($_row = mysqli_fetch_assoc($result))
                  {
              $_list[] = $_row;
                  }

              $fp = fopen('php://output', 'wb');

              header('Content-Type: application/msexcel; Charset=utf-8');

              foreach($_list as $key => $value)
                  {
              fputcsv($fp, $value, "\t");
                  }

              ?>

                
                
                
                
              Liebe Grüße aus dem schönen Oberharz  
                
                
              Tom vom Berg  
              ![](http://selfhtml.bitworks.de/Virencheck.gif)  
                
              
              -- 
               ☻\_  
              /▌  
              / \ Nur selber lernen macht schlau  
              <http://bikers-lodge.com>
              
              1. Hallo Tom,

                Probier es doch mal aus.

                Uups ... war etwas umfangreicher. Eigentlich wollte ich die CSV-Datei aus einer Platzhalter-Datei (template) gewinnen, nun habe ich aber doch in das PHP-Programm eingegriffen, allerdings minimal.

                Im Prinzip funktioniert es unter Ubuntu, ich rufe das Programm index.php mit Parametern. Aber nun kommts:

                Firefox 26.0 ignoriert den header und erkennt eine Datei vom Typ PHP-Skript, die mit dem Editor zu öffnen ist.

                Opera 12.16 erkennt richtig den TYP Microsoft Excel Document, Öffnen mit New Spreadsheet. Aber dann kommt der LibreOffice Writer anstatt Calc.

                Beide Browser können die Datei speichern und mit Calc kann ich sie wieder aufrufen. Sieht wie gewünscht aus.

                Ein schönes Ergebnis für heute Abend.

                Danke euch allen.

                Linuchs

      2. ... sehe gerade in einem LibreOffice Textdokument, dass der TAB gar nicht kommt, also vom Browser nicht an die Zwischenablage übergeben wird, auch nicht aus dem Quellcode.

        Hmmm ... habe jetzt &#09; in den Quellcode gesetzt, wird trotzdem vom Browser nicht als TAB an die Zwischenablage übergeben.

        1. Hallo,

          ... sehe gerade in einem LibreOffice Textdokument, dass der TAB gar nicht kommt, also vom Browser nicht an die Zwischenablage übergeben wird, auch nicht aus dem Quellcode.

          ...wenn du das Dokument als text/html auslieferst? Ja, klar. Dann gilt ein Tab-Zeichen als Whitespace und wird vom Browser dementsprechend als Leerzeichen weitergegeben.

          Hmmm ... habe jetzt &#09; in den Quellcode gesetzt, wird trotzdem vom Browser nicht als TAB an die Zwischenablage übergeben.

          Logisch. Ist ja auch dasselbe.

          Ciao,
           Martin

          --
          Wer barfuß geht, dem kann man nicht die Schuld in die Schuhe schieben.
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      3. Hi,

        Im Teststadium gebe ich die CSV-Datei erstmal als HTML-Datei auf den Bildschirm, […]
        Nun kopiere ich den sichbaren Text aus dem Browser in die Zwischenablage und […]

        Warum konstruiert du dir bewusst einen „Testfall“, der mit dem späteren Anwendungsfalls nur wenig zu tun hat – und machst dir die Sache damit unnötig kompliziert?

        Erzeuge eine Datei, lade sie herunter – und teste damit unter *realen* Bedingungen. Alles andere ist Unfug.

        MfG ChrisB

        --
        Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
        1. Hello,

          Warum konstruiert du dir bewusst einen „Testfall“, der mit dem späteren Anwendungsfalls nur wenig zu tun hat – und machst dir die Sache damit unnötig kompliziert?

          Das ist jetzt aber nicht ChrisB, oder habe ich Dich hier verkehrt verstanden?

          Testfälle sollen doch gerade die Grenzen einer Anwendung ermitteln.
          Dass eine Anwendung die Normalfälle beherrschen kann, versteht sich doch von selbst.

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bikers-lodge.com
          1. Hi,

            Testfälle sollen doch gerade die Grenzen einer Anwendung ermitteln.

            Ein Testfall sollte die korrekte Umsetzung der Spezifikation belegen, *auch* in Bezug auf Grenzfälle.

            Dass eine Anwendung die Normalfälle beherrschen kann, versteht sich doch von selbst.

            Und das sichert man ab, in dem man die diesbezüglich definierten Tests erfolgreich durchführt.

            So weit ist der OP ja aber noch gar nicht – der will erst mal „testen“, ob das auch so funktioniert, wie er sich es gedacht hat. Warum er aber irgendeinen Copy&Paste-Kram testet, wenn die Anforderung doch lautet, eine CSV-Datei herunterzuladen, leuchtet mir daher nicht ein.

            MfG ChrisB

            --
            Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
            1. Hello,

              [...]

              So weit ist der OP ja aber noch gar nicht – der will erst mal „testen“, ob das auch so funktioniert, wie er sich es gedacht hat. Warum er aber irgendeinen Copy&Paste-Kram testet, wenn die Anforderung doch lautet, eine CSV-Datei herunterzuladen, leuchtet mir daher nicht ein.

              Da stimme ich Dir zu.
              Copy & Paste hat zusätzliche Veränderliche eingebaut, die man nicht so einfach sieht.

              Besser erst mal simpel halten das Ganze, dann bekommt man ein besseres Gefühl dafür, ob Vorstellung und Wirklichkeit zusammenpassen.

              Liebe Grüße aus dem schönen Oberharz

              Tom vom Berg

              --
               ☻_
              /▌
              / \ Nur selber lernen macht schlau
              http://bikers-lodge.com
              1. Hi,

                Da stimme ich Dir zu.

                Das ist jetzt aber nicht Tom, oder …? ;-)

                MfG ChrisB

                --
                Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
                1. Hello,

                  Da stimme ich Dir zu.

                  Das ist jetzt aber nicht Tom, oder …? ;-)

                  Ping ... Pong

                  :-))

                  Liebe Grüße aus dem schönen Oberharz

                  Tom vom Berg

                  --
                   ☻_
                  /▌
                  / \ Nur selber lernen macht schlau
                  http://bikers-lodge.com
  3. hi,

    eine vorhandene Liste soll Kunden zwecks Übernahme in deren (nicht näher bekannten) Programm zur Verfügung gestellt werden.

    Angedacht ist, dass die eine CSV-Datei in Excel importieren können.

    Ist Excel das Ziel, dann erstelle eine Excel-Datei, hier ist jede Zelle direkt adressierbar.

    Horst

  4. Hi,

    Angedacht ist, dass die eine CSV-Datei in Excel importieren können.
    Nun können in einem zu übergebenden Textfeld alle möglichen UTF-8 Zeichen stehen inklusive der CSV-Trennzeichen. Das wäre standardmäßig ein , Komma?

    Wie müsste ich dann CSV-konform das Komma im Text maskieren?

    Macht fputcsv das nicht automatisch alles richtig mit dem escapen usw.?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
  5. Laut

    https://de.wikipedia.org/wiki/CSV_%28Dateiformat%29

    Um Sonderzeichen innerhalb der Daten nutzen zu können (z. B. Komma in Dezimalzahlwerten), wird ein Feldbegrenzerzeichen (auch: Textbegrenzungszeichen) benutzt. Normalerweise ist dieser Feldbegrenzer das Anführungszeichen ". Wenn der Feldbegrenzer selbst in den Daten enthalten ist, wird dieser im Datenfeld verdoppelt (siehe Maskierungszeichen).

    ... Du brauchst nur das " zu maskieren.

    Grüße

    • Steffen

    IIRC machen die PHP-Funktionen da einen Blödsinn.

    1. Tach!

      Wenn der Feldbegrenzer selbst in den Daten enthalten ist, wird dieser im Datenfeld verdoppelt (siehe Maskierungszeichen).
      ... Du brauchst nur das " zu maskieren.

      Nein, dae reicht nicht. Wenn du Feldbegrenzer in den Daten hast, und diese maskieren musst, muss auch das Feld begrenzt werden. Ohne begrenztes Feld hat man keine Feldbegrenzer-Zeichen, die mit den Feldbegrenzern kollidieren könnten. Anders gesagt: der Feldbegrenzer schaltet in den Modus "das hier ist ein Feld", bis der Feldbegrenzer ein weiteres Mal auftaucht. Damit dieser Modus nicht verlassen wird, muss der Feldbegrenzer innerhalb der Daten durch Verdopplung maskiert sein.

      IIRC machen die PHP-Funktionen da einen Blödsinn.

      Glaub ich nicht, nachdem ich dir gerade deinen Denkfehler aufzuzeigen versuchte. Aber wenn du immer noch der Meinung bist, dann sag mal bitte konkreter, was du da als Fehler ansieht.

      dedlfix.

      1. Hi,

        Wenn der Feldbegrenzer selbst in den Daten enthalten ist, wird dieser im Datenfeld verdoppelt (siehe Maskierungszeichen).
        ... Du brauchst nur das " zu maskieren.

        Nein, dae reicht nicht. Wenn du Feldbegrenzer in den Daten hast, und diese maskieren musst, muss auch das Feld begrenzt werden. Ohne begrenztes Feld hat man keine Feldbegrenzer-Zeichen, die mit den Feldbegrenzern kollidieren könnten. Anders gesagt: der Feldbegrenzer schaltet in den Modus "das hier ist ein Feld", bis der Feldbegrenzer ein weiteres Mal auftaucht. Damit dieser Modus nicht verlassen wird, muss der Feldbegrenzer innerhalb der Daten durch Verdopplung maskiert sein.

        Das habe ich irgendwie vorausgesetzt.

        IIRC machen die PHP-Funktionen da einen Blödsinn.

        Glaub ich nicht, nachdem ich dir gerade deinen Denkfehler aufzuzeigen versuchte. Aber wenn du immer noch der Meinung bist, dann sag mal bitte konkreter, was du da als Fehler ansieht.

        Ich habe bei

          
        array str_getcsv ( string $input [, string $delimiter = ',' [, string $enclosure = '"' [, string $escape = '\\' ]]] )  
        
        

        aufgehört zu lesen und habe mir selber etwas geschrieben.
        Was soll der $escape sein?
        Scheinbar funktioniert die Funktion doch so, wie ich es erwarten würde, aber was soll das $escape sein?

        MfG

        • Steffen
        1. Hi,

          Ich habe bei

          array str_getcsv ( string $input [, string $delimiter = ',' [, string $enclosure = '"' [, string $escape = '\' ]]] )

          
          > aufgehört zu lesen und habe mir selber etwas geschrieben.  
          > Was soll der $escape sein?  
          > Scheinbar funktioniert die Funktion doch so, wie ich es erwarten würde, aber was soll das $escape sein?  
            
          Na ein optionales Maskierungszeichen für den Fall, dass der Feldinhalt den Feldbegrenzer enthält.  
            
          <http://en.wikipedia.org/wiki/Comma-separated_values#Technical_background>:  
          
          > More sophisticated CSV implementations permit [special characters], often by requiring " (double quote) characters around values that contain reserved characters (such as commas, double quotes, or less commonly, newlines). Embedded double quote characters may then be represented by a pair of consecutive double quotes (Creativyst 2010), or by prefixing an escape character such as a backslash (for example in Sybase Central).  
            
            
          MfG ChrisB  
            
          
          -- 
          Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/