Ich habe eine Zeile wie diese in meiner CSV:
"Samsung U600 24"","10000003409","1","10000003427"
Das Zitat neben 24
wird verwendet, um Zoll auszudrücken, während das Zitat direkt neben diesem Zitat das Feld schließt. Ich lese die Zeile mit, fgetcsv
aber der Parser macht einen Fehler und liest den Wert wie folgt :
Samsung U600 24",10000003409"
Ich habe versucht, einen Backslash vor das Zoll-Zitat zu setzen, aber dann bekomme ich nur einen Backslash im Namen:
Samsung U600 24\"
Gibt es eine Möglichkeit, dies in der CSV ordnungsgemäß zu umgehen, sodass der Wert lautet Samsung U600 24"
, oder muss ich ihn im Prozessor neu ausdrücken ?
Antworten:
Verwenden Sie 2 Anführungszeichen:
quelle
Sie benötigen nicht nur doppelte Anführungszeichen, sondern auch einfache Anführungszeichen (
'
), doppelte Anführungszeichen ("
), Backslash (\
) und NUL (das NULL-Byte).Verwenden Sie
fputcsv()
zum Schreiben undfgetcsv()
Lesen, was sich um alle kümmert.quelle
fputcsv()
zeigt, wie Sie verwenden können,fputcsv()
wenn Sie im CSV-Format anstelle einer tatsächlichen Datei im Browser ausgeben möchten.Ich weiß, dass dies ein alter Beitrag ist, aber hier ist, wie ich ihn (zusammen mit der Konvertierung von Nullwerten in leere Zeichenfolgen) in C # mithilfe einer Erweiterungsmethode gelöst habe.
Erstellen Sie eine statische Klasse mit folgenden Elementen:
Dann schreiben Sie für jede Zeichenfolge, die Sie in CSV schreiben, anstelle von:
Sie tun einfach:
quelle
Wenn ein Wert ein Komma, ein Zeilenumbruchzeichen oder ein doppeltes Anführungszeichen enthält, muss die Zeichenfolge in doppelte Anführungszeichen eingeschlossen werden. Beispiel: "Newline-Zeichen in diesem Feld \ n".
Sie können das folgende Online-Tool verwenden, um "" und Operatoren zu entkommen. https://www.freeformatter.com/csv-escape.html#ad-output
quelle