• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Regulärer ausdruck funktioniert nicht

  • Ersteller Gelöschtes Mitglied 3007
  • Erstellt am
Status
Für weitere Antworten geschlossen.
G

Gelöschtes Mitglied 3007

Guest
Hier mein Code

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

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:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>{-$pagetitle-}</title>
		<style type="text/css">
			body {
				background-color: #00FFCC;
			}
			
			#test {
				background-color: #000000;
				color: #FFFFFF;
			}
		</style>
	</head>
	<body>
		<div id="test">hi</div>
	</body>
</html>

irgendjemand ne idee, was ich falsch gemacht habe? ^^
 
Werbung:
probier es mal so
PHP:
<?php
$pattern = "/".preg_quote("{-").".+".preg_quote("-}")."/e";
$replace = "array($this, get_var('$1'))";
$file = preg_replace($pattern, $replace, $file);
?>
 
Ne tut mir leid brauch ich garnicht ausprobieren ^^
Das geht nie :p

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 ;) *gg*
 
Werbung:
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 :p
 
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();

also funktioniert $this->bla wunderbar ;)

{- 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 ^^
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben