PHP : Pattern!?

Hallo,

ich möchte die Funktion

$splitted=preg\_split("/[{};()]+/",$this-\>eingabe,-1,PREG\_SPLIT\_DELIM\_CAPTURE)

Das PREG_SPLIT_DELIM_CAPTURE soll eigentlich bewirken, dass auch die „Trennzeichen“ mit in das Array geschrieben werden.
Das funktioniert bei diesem Beispiel leider nicht.

Ich habe einen Hinweis im I-Net gefunden, dass die Ausdrücke, die mit in das Array sollen in Klammern geschrieben werden sollen, doch leider bekomme ich das nicht hin, da ich den Aufbau dieses Patterns noch nicht richtig verstanden habe.

Ich brauche folgende Zeichen als Trennzeichen:

  • geschweifte Klammern auf/zu
  • runde Klammern auf/zu
  • Semikolon
  • Leerzeichen

Vielen Dank im Voraus!!!

Gruß
Thomas

Hallo Thomas,

ich möchte die Funktion

$splitted=preg_split("/[{};()]+/",$this->eingabe,-1,PREG_SPLIT_DELIM_CAPTURE)

Das PREG_SPLIT_DELIM_CAPTURE soll eigentlich bewirken, dass
auch die „Trennzeichen“ mit in das Array geschrieben werden.
Das funktioniert bei diesem Beispiel leider nicht.

Vielleicht brauchst Du nur die „zu capturenden“ Elemente
in Klammern zu schrieben?

 preg\_split("/(**[**)|(**]**)|( **{** )|( **}** )|( **;** )|(**\(**)|(**\)**).+/",
 $this-\>eingabe,
 -1,
 PREG\_SPLIT\_DELIM\_CAPTURE)

Ich habe einen Hinweis im I-Net gefunden, dass die Ausdrücke,
die mit in das Array sollen in Klammern geschrieben werden
sollen, doch leider bekomme ich das nicht hin, da ich den
Aufbau dieses Patterns noch nicht richtig verstanden habe.

sollen in Klammern geschrieben werden.
Du sagst es :wink:

Wie sieht so ein Text aus, den Du splitten willst?

Grüße

CMБ

Hallo,

Hallo,

ich möchte die Funktion

$splitted=preg_split("/[{};()]+/",$this->eingabe,-1,PREG_SPLIT_DELIM_CAPTURE)

Das PREG_SPLIT_DELIM_CAPTURE soll eigentlich bewirken, dass
auch die „Trennzeichen“ mit in das Array geschrieben werden.
Das funktioniert bei diesem Beispiel leider nicht.

Versuche mal

/([{};()]+)/

Alexander

Hallo Alexander

Versuche mal

/([{};()]+)/

Du hast recht!

PHP kann sogar aus Zeichenklassen capturen
(wer hätte das vermutet). Allerdings werden
Leerzeichen irgendwie „generell“ als Feld-
trenner verwendet, aber nicht gecaptured - wenn
sie nicht in explizit der Zeichenklasse stehen, ==>

/([{};()]+)/

Nach Deinem Hinweis hab
ich mal PHP angeworfen. Die Sequenz

<?php $txt = '<B>das ist a(x) und; und b{y} hehe ; oder was ';

 $r = preg\_split('/**(**[**{};()**]**)**/', $txt, -1, PREG\_SPLIT\_DELIM\_CAPTURE);
 for ($n=0; $n";
 }
?\>

trennt wahrscheinlich so, wie es vom OP gedacht war (siehe *).
Wer weiss? :wink:

Grüße & Danke für die richtige Spur …

CMБ

*)

 r[0] = das ist a
 r[1] = (
 r[2] = x
 r[3] = )
 r[4] = und
 r[5] = ;
 r[6] = und b
 r[7] = {
 r[8] = y
 r[9] = }
 r[10] = hehe
 r[11] = ;
 r[12] = oder was