Regulärer ausdruck funktioniert nicht

Hier mein Code

[php]$reg = „/{-$([\w.-]+)-}/U“;
$rep = „<?php echo \$this->get_var('$1'); ?>“;
$file = preg_replace($reg, $rep, $file);[/php]

Nun sollten eigentlich alle {-$variable-} und so aus meiner Datei rausgefiltert werden und durch <?php echo $this->get_var('variable'); ?> ersetzt werden. Tja hab ich mir wohl so gedacht funktioniert aber nicht ^^

so sieht die datei aus

[code]

{-$pagetitle-} body { background-color: #00FFCC; }
		#test {
			background-color: #000000;
			color: #FFFFFF;
		}
	</style>
</head>
<body>
	<div id="test">hi</div>
</body>
[/code]

irgendjemand ne idee, was ich falsch gemacht habe? ^^

probier es mal so
[PHP]

<?php $pattern = "/".preg_quote("{-").".+".preg_quote("-}")."/e"; $replace = "array($this, get_var('$1'))"; $file = preg_replace($pattern, $replace, $file); ?>

[/PHP]

Ne tut mir leid brauch ich garnicht ausprobieren ^^
Das geht nie :stuck_out_tongue:

Erstens, weil du keine Variable speicherst also ist $1 schonmal leer.
Zweitens hast du vergessen das $ von $this zu escapen.
Und drittens würde das die ergebnisse catchen und das will ich nicht ^^

trotsdem danke :wink: gg

ja hab vergessen () um .+ zu schreiben

Das Problem an der Sache ist, dass du ne Funktion aufrufst die ne Methode ist von der Klasse. Deshalb:
array($this, get_var())

Da es ein Callback ist kannst du mit return arbeiten, das klappt schon, wenn man es richtig anstellt :stuck_out_tongue:

da liegt eigentlich garnicht das problem ^^ in meiner template klasse werden die templates so geholt

[php]ob_start();
include($file[1]);
$out = ob_get_contents();
ob_end_clean();[/php]

also funktioniert $this->bla wunderbar :wink:

{- wird so {- richtig escaped so weit weiß ich es auch schon also kann ich mir preg_quote spaaren ^^

es ist wirklich einfach nur so das ein regulärer ausdruck der es fonden MUSS nicht funktioniert obwohl meiner bescheidenen meinung nach alles richtig ist ^^