Hallo,
unter Brainstorming habe ich eine Diskussion zum Thema Templates verfolgt. Dort wurde für verschachtelte Blöcke/Schleifen "?R" im Zusammenhang mit RegEx empfohlen. Das Tut und die Seite im Manual dazu habe ich mir bereits reingezogen, allerdings habe ich noch Schwierigkeiten.
Folgendes Beispiel:
liefert mir
Ich hätte allerdings gerne "cd" als letzten Treffer - also die innerste Ebene.
Den pattern habe ich wie folgt analysiert:suche eine beliebige Zeichenfolge ohne runde Klammern [^()]+ oder eine Zeichenfolge auf die der Pattern zutrifft innerhalb von ( bzw. ) das sind die \( bzw \). Daher hätte ich als Ergebnis cd erwartet ...
Nur ?> verstehe ich nicht
Kann mir jemand helfen das zu kapieren? Vielen Dank!
unter Brainstorming habe ich eine Diskussion zum Thema Templates verfolgt. Dort wurde für verschachtelte Blöcke/Schleifen "?R" im Zusammenhang mit RegEx empfohlen. Das Tut und die Seite im Manual dazu habe ich mir bereits reingezogen, allerdings habe ich noch Schwierigkeiten.
Folgendes Beispiel:
PHP-Code:
<?php
//RegEx:Test
$test="(ab(cd)ef)";
$pattern="%\((((?>[^()]+)|(?R))*)\)%";
preg_match_all($pattern,$test,$matches,PREG_SET_ORDER);
echo "<pre>\n";
print_r($matches);
echo "</pre>\n";
?>
PHP-Code:
Array
(
[0] => Array
(
[0] => (ab(cd)ef)
[1] => ab(cd)ef
[2] => ef
)
)
Den pattern habe ich wie folgt analysiert:suche eine beliebige Zeichenfolge ohne runde Klammern [^()]+ oder eine Zeichenfolge auf die der Pattern zutrifft innerhalb von ( bzw. ) das sind die \( bzw \). Daher hätte ich als Ergebnis cd erwartet ...
Nur ?> verstehe ich nicht
Kann mir jemand helfen das zu kapieren? Vielen Dank!
Kommentar