Hallo Martin,
da hast Du natürlich recht - CSV ist ein Unfall, der darauf wartet, zu passieren. Bloß - Excel ist das Lieblingsspielzeug aller Bürohengste (und -stuten) und wenn die Daten dort stehen, gibt es kaum eine andere Wahl.
Ich habe jetzt nochmal mit einer CSV Datei statt einem String experimentiert - die Zeilenumbrüche funktionieren nicht gut. Weil EXCEL einen Zeilenumbruch in einer Zelle als \n speichert - das CSV Zeilenende dann als \r\n. Und ich kriege PHP nicht beigebracht, Zeilen ausschließlich bei CR+LF zu beenden. Geht das nicht?!
Mit file_get_contents und explode auf \r\n, dann ein str_getcsv auf die Fragmente geht es. Brrr. Solange die CSV Datei nicht zu groß ist... Aber die Datei zeichenweise mit fgetc einlesen und die Zeilenenden selbst zu erkennen dürfte bei großen Dateien nicht praktikabel sein.
Edit: Autsch - geht doch. Keine Ahnung was ich da eben verbockt habe. Zeilenumbrüche in einer Zelle, die in Anführungszeichen in der CSV steht, werden von fgetcsv ordentlich verarbeitet. Das war in alten PHP Versionen mal falsch.
Rolf
sumpsi - posui - obstruxi