![]() |
Loops: Regex mit Positionsangabe
hi
ich schreibe gerade so eine art parser für loops (schleifen). darin soll eben ein markierter bereich wiederholt werden, z. b.: Code:
Das ist ein... {LOOP<}Text {>LOOP} am besten ist es, wenn der parser den muster mit einem regulären ausdruck erkennt ({LOOP<}Text {>LOOP}) und dann die entsprechende position im text zurückgibt, also z. b. "der text {LOOP<}Text {>LOOP} bedindet sich bei zeichen 10 bis zeichen 29". wie kann ich sowas in php machen? |
z.B. so wenn du eine einfache Variante möchtest:
preg_replace("/\{LOOP<\}(.*?)\{>LOOP\}/","$1$1$1$1$1$1$1$1$1$1",$string) Das wäre das einfache Ersetzen. Warum ist das in deinem Fall nicht sinnvoll? Wenn du eine andere Variante möchtest wäre es gut, wenn du dein Problem ein bisschen genauer beschreiben würdest. |
ich vereinfache das beispiel mal. also der parser macht folgendes. aus dem z. B.:
Code:
Text 1 Text 1 Text 1 Text 1 Text 1 [LOOP]Wiederholung 1 Wiederholung 1 [VAR:titel] Wiederholung 1[/LOOP]Text 2 Text 2 PHP-Code:
ich denke das geht am besten mit einem regex. damit die strukturen aber in der richtigen reihenfolge im array stehen, muss der parser den string ja von anfang bis ende "durchparsen", damit die verschachtelungen ([LOOP]..[/LOOP]) berücksichtigt werden. wie kann ich sowas machen? |
Re: Loops: Regex mit Positionsangabe
Zitat:
per regex würde ich preg_match_all() bevorzugen |
Alle Zeitangaben in WEZ +2. Es ist jetzt 17:01 Uhr. |
Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG