Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Beiträge: 1 402

Wohnort: Cuxhaven

1

Montag, 12. April 2010, 16:18

[php] preg_split

Hey.

Ich versuche diese Zeichenkette so aufzuteilen, dass jeweils der Inhalt der tags in unterschiedliche Indizes eines Arrays geschrieben werden.

<name=username><date=12.04.2010><message=testmessage><ip=123.123.123.123>

Das Array soll dann so aussehen.

arr[0] = <name=username>;
arr[1] = <date=12.04.2010>;
usw..

Ich hatte das "damals" mit den üblichen stringfuktionen gemacht, würdes aber gerne mit einem regulärem ausdruck und preg_split realisieren.

Momentan sieht mein Ausdruck so aus (In der Funktion eingesetz):

preg_split('/<[^>]*>/',$logs[0],$arr);

Also beginnend mit spitzer Klammer und ende spitze Klammer. Leider gibt mir die funktion nur nen array mit 4 leeren indizes zurück.

Jemand ne Idee, was ich falsch mache ?

~greets

“The best way to make your dreams come true is to wake up.”
~Paul Valery

prex

Projektzeitungsträger

Beiträge: 1 695

Wohnort: 91522 Ansbach

Beruf: Schüler

2

Montag, 12. April 2010, 19:32

Hi chaos,

ich muss zugeben, ich war jetzt auch ganz schön stuzig, warum das nicht klappt. Nach ein bisschen ausprobieren bin ich aber auf die Lösung gekommen: Der reguläre Ausdruck ist nicht der für das Element, das du haben willst, sondern definiert das Trennzeichen. Heißt: Du hast durch deinen regex-Code jedes Element zu einem Trennzeichen gemacht und er liefert dir daher die leeren Arrayelemente zwischen ...><... zurück.

Entweder du findest nen Code, der <, >< und > als Trennzeichen ansieht, oder du machst das halt doch einfach über explode. Ist leistungstechnisch sowieso sinnvoller, nen fertigen Code kann ich dir leider für beides nicht anbieten. Falls dus auf jeden Fall über nen Regulären Ausdruck machen möchtest, sei dir der RegExr ans Herz gelegt - ein wirklich geniales Tool zum Testen von Regulären Ausdrücken mit vielen Beispielen.

Liebe Grüße und viel Erfolg,

prex

Beiträge: 1 402

Wohnort: Cuxhaven

3

Montag, 12. April 2010, 21:27

Hey klasse : D.

Da hätte ich ja noch ewig probieren können.
Ich teile es jetzt mit />|<|></ auf, funktioniert wunderbar :].

Danke für die schnelle Hilfe :].

~greets

“The best way to make your dreams come true is to wake up.”
~Paul Valery