Hallo,
ich habe folgendes kleines Problem:
Ich habe einige Templates, bei denen Inhalte dynamisch ersetzt werden müssen. Die Stellen sind wie folgt gekennzeichnet:
{#REPLACE_ME#}
die zugehörigen Inhalte stehen in einem Array:
$replace_content[REPLACE_ME] = 'TEST';
Jetzt wollte ich mit Hilfe von Regulären Ausdrücken die entsprechenden Stellen durch die Inhalte des Array's ersetzen. (Muss dazusagen das ich bisher kaum mit RegEx gearbeitet habe), folgende Lösungsansätze funktionieren leider nicht:
(1)
$t = preg_replace("/(\{#)(\w{1,})(#\})/", $replace_content["\\2"], $t);
Die richtigen Stellen werden zwar gefunden, aber nicht durch das entsprechende Arrayfeld ersetzt.
(2)
$t= preg_replace_callback ("/(\{#)(\w{1,})(#\})/", 'call', $t);
Funktioniert eigentlich, sofern die Funktion "call" global ist und sich nicht in meiner Template-Klasse befindet. Das Frage hier ist: wie rufe ich mit preg_replace_callback eine Funktion auf die sich in der gleichen Klasse befindet (Nur innerhalb der Klasse steht mir das Array mit den ersetzenden Inhalten zur Verfügung)?
$t= preg_replace_callback ("/(\{#)(\w{1,})(#\})/", 'this->call', $t);
funktioniert nicht. :-(
Ist das Problem generell mit preg_replace lösbar? Falls nein, wie rufe ich mit preg_replace_callback eine Funktion der aktuellen Klasse auf?
Danke schon mal für eure Hilfe!
tracer
PS: Das Projekt wird mit PHP 5.0.2 realisiert.
ich habe folgendes kleines Problem:
Ich habe einige Templates, bei denen Inhalte dynamisch ersetzt werden müssen. Die Stellen sind wie folgt gekennzeichnet:
{#REPLACE_ME#}
die zugehörigen Inhalte stehen in einem Array:
$replace_content[REPLACE_ME] = 'TEST';
Jetzt wollte ich mit Hilfe von Regulären Ausdrücken die entsprechenden Stellen durch die Inhalte des Array's ersetzen. (Muss dazusagen das ich bisher kaum mit RegEx gearbeitet habe), folgende Lösungsansätze funktionieren leider nicht:
(1)
$t = preg_replace("/(\{#)(\w{1,})(#\})/", $replace_content["\\2"], $t);
Die richtigen Stellen werden zwar gefunden, aber nicht durch das entsprechende Arrayfeld ersetzt.
(2)
$t= preg_replace_callback ("/(\{#)(\w{1,})(#\})/", 'call', $t);
Funktioniert eigentlich, sofern die Funktion "call" global ist und sich nicht in meiner Template-Klasse befindet. Das Frage hier ist: wie rufe ich mit preg_replace_callback eine Funktion auf die sich in der gleichen Klasse befindet (Nur innerhalb der Klasse steht mir das Array mit den ersetzenden Inhalten zur Verfügung)?
$t= preg_replace_callback ("/(\{#)(\w{1,})(#\})/", 'this->call', $t);
funktioniert nicht. :-(
Ist das Problem generell mit preg_replace lösbar? Falls nein, wie rufe ich mit preg_replace_callback eine Funktion der aktuellen Klasse auf?
Danke schon mal für eure Hilfe!
tracer
PS: Das Projekt wird mit PHP 5.0.2 realisiert.
Kommentar