Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wagenrückläufe in CSV-Zelle über PHP erstellen

Die CSV-Spezifikation ist eines, das ich auf viele verschiedene Arten implementiert finde ... es scheint im Grunde nur halb so schnell zu sein, was angesichts seiner Popularität frustrierend ist.

Um einen Zeilenumbruch innerhalb einer Zelle in eine CSV einzufügen, muss die Zelle möglicherweise umbrochen oder der Zeilenumbruch mit einem Escapezeichen versehen werden. Sie werden anhand des verknüpften Dokuments feststellen, dass es drei Möglichkeiten gibt, dies zu tun - und verschiedene Programme behandeln dies unterschiedlich:

  1. Excel setzt die gesamte Zelle in doppelte Anführungszeichen:Eine Zelle kann Zeilenumbruchzeichen (ohne Escapezeichen) enthalten und als einzelne Zelle betrachtet werden, solange sie in doppelte Anführungszeichen gesetzt ist (beachten Sie auch, dass Sie den Excel-Stil verwenden müssen doppeltes Anführungszeichen innerhalb des Zelleninhalts)
  2. Andere Programme fügen vor dem Zeichen einen einzelnen Backslash ein, also eine Zeile, die mit \ endet gilt nicht als Zeilenende, sondern als Zeilenumbruch innerhalb der Zelle. Eine Zelle kann Zeilenumbruchzeichen ohne Escapezeichen enthalten, solange ihnen der umgekehrte Schrägstrich vorangestellt ist.
  3. Andere ersetzen immer noch einen Zeilenumbruch durch Escapezeichen im C-Stil, die eigentliche Zeichenfolge \n oder \r\n . In diesem Fall hat die Zelle Zeilenumbrüche vollständig maskiert.

Das Problem wird durch die potenzielle Notwendigkeit verstärkt, die Steuerzeichen (sowie anderen Inhalt (z. B. " in #1 und \ in #2+3) und verschiedene Escape-Stile (z. B. könnte ein eingebettetes Anführungszeichen maskiert werden als:doppeltes doppeltes Anführungszeichen "" oder umgekehrter Schrägstrich in doppelten Anführungszeichen \" )

Mein Rat :Generieren Sie ein Open-Office-Dokument mit mehreren Zeilen und Schlüssel-Escape-Zeichen und sehen Sie, wie Open Office eine CSV generiert Datei. Von dort aus können Sie entscheiden, welche der oben genannten Methoden für Zeilenumbrüche innerhalb von Zellen und welche Escape-Methode verwendet werden soll.

Beispiel für Stil-1 (Excel):

#num,str,num
1,"Hello
World",1990
2,"Yes",1991

Beispiel für Stil-2:

#num,str,num
1,Hello \
Word,1990
2,Yes,1991

Beispiel für Stil-3:

#num,str,num
1,Hello \nWorld,1990
2,Yes,1991