Reguläre Ausdrücke: Erster Treffer in Regex direkt verwenden

GoogleFreak

Grünschnabel
Hallo liebe Community

Ich schlage mich mit einem kleinen Problem rum.
Für mein Templatesystem möchte ich WENN Abfragen folgendermassen verwenden:

Code:
{if=blabla}
<b>dann</b>
usw...
{/if=blabla}

Derzeit habe ich folgenden Code:
PHP:
preg_match_all("#\{if\=([a-z]+)\}(.*?)\{/if\=__?__\}#ism", $Content, $Match); # Später wird dann preg_replace verwendet

Ist es möglich, den Treffer ([a-z]+) bei "__?__" (siehe PHP Code) direkt einzusetzen?
Ich habe es bereits mit $1 versucht, aber das klappt leider nicht.

Danke für Eure Hilfe.

Greez
 
Code:
#\{if=([a-z]+)\}(.*?)\{/if=\1\}#ism
Aber schreib dir lieber einen richtigen Parser statt auf irgendwelche obskuren Konstrukte und reguläre Ausdrücke zurückzugreifen.
 
Hallo Gumbo

Danke für deine Antwort.
Könntest du deinen Post etwas präzisieren und mir erklären, was du daran bemängelst und wie ich es besser machen könnte.

Danke und Greez
 
Sobald du solche Kontrollstrukturen verschachteln möchtest, wirst du sehen, dass reguläre Ausdrücke (allein) nicht mächtig genug dafür sind.
Code:
{if=blabla}
    {if=blabla}
        foobar
    {/if=blabla}
{/if=blabla}
Auch wenn dieses Beispiel zu konstruiert ist und wohl nicht wirklich Anwendung findet, verdeutlicht es doch ein Problem, dass sich nicht mit regulären Ausdrücken allein zu lösen ist.
 
Zurück