CSV - Zerlegen

Raven280438

Erfahrenes Mitglied
Hi,

ich habe eine CSV-Datei, deren Werte durch , getrennt sind.
Diese Datei zerlege ich in die einzelnen Zeilen und möchte die Werte gerne in eine Datenbank eintragen.

Das Problem:
Normalerweise würde ich die Zeilen mit explode() in die einzelnen Werte aufteilen. Mein Problem ist jedoch, dass Werte, die ein , enthalten in Anführungszeichen ( " ) stehen. Jedoch nur wenn ein , im Wert vorkommt.

Beispiel:
Klaus,Mustermann,"klaus@mustermann.de,klaus.mustermann@web.de"

Wie kann ich jetzt die Zeilen richtig zerteilen?


Bitte jetzt nicht sagen, dass ich doch beim Erstellen alle Werte in " setze, auf die Erstellung der Dateien hab ich keinen Einfluss.


Gruß
 
Auf der Suche nach getc (Datei zeichenweise einlesen und per Hand ins Array verpacken) hat mir php.net fgetcsv vorgeschlagen... sieht ganz gut aus, kann dir nur empfehlen ;)

PHP:
$file = fopen('daten.csv', 'r');
$inhalt = fgetcsv($file, 1000, ',', '"');
 
Hi,

ok danke das funktioniert soweit.

Ein neues Problem ist aber, dass einige Werte auch über mehrere Zeilen gehen (\n)

Hat jemand ne Idee wie ich diese Werte richtig einlesen kann?



Gruß
 
Das darf eigentlich nicht sein, wie soll denn da festgestellt werden wo ein Eintrag zu Ende ist...
Du könntest alle Zeilenumbrüche entfernen und dann per Abzählen die zusammengehörigen Einträge gruppieren, aber das wär mal sehr... außer der Reihe ...:D
 
Ok,

ich suche jetzt einen regulären Ausdruck für ereg_replace, um alle \r\n die zwischen zwei Anführungsstrichen " sind, durch 2 Leerzeichen zu ersetzten.
\r\n ausserhalb der Anführungsstriche sollen erhalten bleiben.

Kann jemand weiterhelfen?
 

Neue Beiträge

Zurück