Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

explode() in Anführungszeichen eingeschlossene Delimiter ignorieren

0 views
Skip to first unread message

Kai Schuster

unread,
Jul 5, 2009, 5:43:43 AM7/5/09
to
Hallo,
ich lese ein Datei per fgetcsv ein, mach dann aus jeder Zeile ein Array,
um das Ganze dann in eine DB einzufügen.

Der Delimiter ist ein Semikolon.

Nur leider enthält ein (oder evtl. mehr Felder) ein Semikolon innerhalb,
das kein Trennzeichen sein soll. Dieser Textstring ist dann im Gegensatz
zu anderen Strings, in Anführungszeichen eingeschlossen.

Beispiel:

12345;123;Hedemündener Straße 99 ;Hann
67890;456;"BAT Hasselberg-West; A 3"; Kassel
55555;333;Frankfurter Straße 225 ;Köln

$zeile_array = explode(';',$zeile); ergibt logischerweise in der 2.
Zeile 5 Felder. Es sollen aber 4 sein => "BAT Hasselberg-West; A 3" soll
ein Feld sein (Das Semikolon könnte man dort auch austauschen).

Jetzt hab ich schon überlegt, ob preg_split() oder so, weiß aber nicht
wie. Eine andere Lösung wär, die Anzahl der Felder zu begrenzen und das
relevante Feld ans Ende zu setzen. Dann dürfte aber kein weiteres Feld
solche Nicht-Trenner-Semikolons haben.

Was würdet Ihr machen? Gibt es eine schlanke sichere Lösung?

Viele Grüße und danke für Tipps
Kai


Stefan Froehlich

unread,
Jul 5, 2009, 6:33:54 AM7/5/09
to
On Sun, 05 Jul 2009 11:43:43 +0200 Kai Schuster wrote:
> ich lese ein Datei per fgetcsv ein, mach dann aus jeder Zeile ein
> Array, um das Ganze dann in eine DB einzufügen.

Das erscheint mir insofern seltsam, als fgetscv() ja bereits ein Array
zurueckgibt, und zwar unter Beruecksichtigung hiervon:

> Der Delimiter ist ein Semikolon.

> Nur leider enthält ein (oder evtl. mehr Felder) ein Semikolon
> innerhalb, das kein Trennzeichen sein soll. Dieser Textstring ist dann
> im Gegensatz zu anderen Strings, in Anführungszeichen eingeschlossen.

Wieso benuetigst Du danach denn ueberhaupt noch exlode()?

Servus,
Stefan

--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich

Die süße Verführung! Stefan, damit die Gefühle nicht leiden!
(Sloganizer)

Kai Schuster

unread,
Jul 5, 2009, 6:54:53 AM7/5/09
to
Stefan Froehlich schrieb:

> Das erscheint mir insofern seltsam, als fgetscv() ja bereits ein Array
> zurueckgibt
Hm, ich hatte den Code mal aus irgendeinem Buch, ich wollte ohnehin
nochmal drübergehen.

Aber unabhängig davon, hätte ich doch dann das gleiche Problem oder?
Weil fgetcsv auch dort trennen würde?

Gruß Kai

Stefan Froehlich

unread,
Jul 5, 2009, 7:51:04 AM7/5/09
to
On Sun, 05 Jul 2009 12:54:53 +0200 Kai Schuster wrote:
> > Das erscheint mir insofern seltsam, als fgetscv() ja bereits ein
> > Array zurueckgibt

> Aber unabhängig davon, hätte ich doch dann das gleiche Problem oder?

> Weil fgetcsv auch dort trennen würde?

Nein, eben nicht. fgetcsv() erkennt sowohl Trenn-, als auch
Quotezeichen und verarbeitet die Eingabe dementsprechend.

Servus,
Stefan

--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich

Versüssen mit Stefan - gelassen werden mit Imperdinenz.
(Sloganizer)

Kai Schuster

unread,
Jul 5, 2009, 3:24:41 PM7/5/09
to
Kai Schuster schrieb:

> Stefan Froehlich schrieb:
>> Das erscheint mir insofern seltsam, als fgetscv() ja bereits ein Array
>> zurueckgibt
Ja, der Code war tatsächlich nicht ok. Ich habe es jetzt angepasst und
das Problem besteht nicht mehr. explode() wir auch nicht mehr benötigt.

Vielen Dank für Eure Hilfe
Gruß Kai

0 new messages