RegExp > Rückgabeproblem

fanste

Erfahrenes Mitglied
Hi,

Ich habe hier einen RegExp
PHP:
$this->openedTemplate[$tmpFile] = preg_replace("#(?=(<!-- IF ".$what."=".$array["condition"]." -->(.*)<!-- ENDIF -->))#Ueis","\$this->doIf('$what', '$array1','$1')",$this->openedTemplate[$tmpFile]);

Wie man hier sehen kann, hab ich im Pattern ein "(?=" notiert, damit alles, was gefunden wurde an die Funktion übergeben wird. Also von <!-- IF ... bis ... ENDEIF -->. Wenn ich das aber so mache, wird das gefundene nicht mit der Rückgabe der Funktion ersetzt, sondern einfach an die Rückgabe angehängt.

Wie kann/muss ich das ändern, damit nur die Rückgabe da stehen bleibt, ohne das ganze IF Zeugs?
 
Probier mal Folgendes:
PHP:
$this->openedTemplate[$tmpFile] = preg_replace('#<!-- IF '.$what.'='.$array['condition'].' -->(.*)<!-- ENDIF -->#Ueis', '$this->doIf($what, $array1, "\1")', $this->openedTemplate[$tmpFile]);
 
Dann habe ich aber das Problem, dass mir im übergebenen Code
Code:
<!-- IF '.$what.'='.$array['condition'].' -->
und
Code:
<!-- ENDIF -->
fehlt. Es wird dann nur das übergeben, was mit (.*) gefunden wurde.
Bleibt mir wahrscheinlich nichts anderes übrig, als diese zwei Codeteile extra mit anzugeben.
 
Mein Fehler. Nimm statt „\1“ einfach „\0“ oder gruppiere den gesamten Ausdruck.
 
Zurück