Morgen,
ich habe eine Templatedatei die z.B. folgendermaßen aussehen könnte:
schleifen habe ich mit { und } eingefasst. Andere Variablen werden dagegen von Prozentzeichen umschlossen. Dies habe ich gemacht, da ich bei verschachtelten Schleifen die innerste Schleife zuerst übersetze und mich dann nach außen vorarbeite!
Dazu habe ich folgenden Ausdruck verwendet:
([^\}]*) <= damit wird der Inhalt zwischen den Schleifen-Tags ermittelt. Ich würde aber viel lieber anstelle der Prozentzeichen durchgehend { und } verwenden, damit es einheitlich ist! Deswegen dachte ich, könnte ich nach allem Suchen was nicht die Zeichenkette "loop" enthält:
Mein bisheriger Ansatz (die suche nach der id habe ich bei diesem Test weggelassen):
interessant ist für mich dieser Abschnitt:
Dies funktioniert aber nur wenn ich eine Zeichenkette wie diese habe:
das Wort befindet sich also direkt nach der schließenden Klammer für die Schleife. Tauchen Zeichen vor loop auf, wie { oder / funktioniert es nicht mehr!
Habt ihr eine Idee wie ich nach einer kompletten Zeichenkette suchen kann, in denen nicht das zusammenhänge Wort "loop" vorkommt?
ich habe eine Templatedatei die z.B. folgendermaßen aussehen könnte:
Code:
<table style="border:#000 1px solid;"> {loop repeat=$array id=1} <tr> <td style="background-color:%cycle values=#ddd,#eee id=1%;"> %$array.val% </td> {loop repeat=$array2 id=2} <td style="background-color:%cycle values=#ddd,#eee id=1%;"> %$array2.val% </td> {/loop id=2} <td style="background-color:%cycle values=#ddd,#eee id=1%;"> %$array.val2% </td> <td style="background-color:%cycle values=#ddd,#eee id=1%;"> 100 % </td> </tr> {/loop id=1} </table>
Dazu habe ich folgenden Ausdruck verwendet:
PHP-Code:
const reg_exp_loops = '/\{loop {1,}repeat\=(\$[a-z0-9_]*) {1,}id\=([a-z0-9_]*)\}([^\}]*)\{\/loop {1,}id\=\2\}/is';
Mein bisheriger Ansatz (die suche nach der id habe ich bei diesem Test weggelassen):
PHP-Code:
$reg_exp = '/\{loop {1,}repeat\=\$[a-z0-9_]*\}(?!loop)(.*)\{\/loop\}/i';
Code:
(?!loop)(.*)
PHP-Code:
'{loop repeat=$array}loopdfgf{/loop}'
Habt ihr eine Idee wie ich nach einer kompletten Zeichenkette suchen kann, in denen nicht das zusammenhänge Wort "loop" vorkommt?
Kommentar