preg_replace, regulärer Ausdruck funktioniert nicht

GalaxyWarrior

Erfahrenes Mitglied
Hi,

ich habe mal ein wenig über reguläre Ausdrücke auf der php.net page gelesen und wollte nun versuchen wenn in einer Datei {blabla} steht, das mit einer Datei zu ersetzen.

Nun habe ich folgendes:

$design = preg_replace("/{(.*)}/isUe", include("templates/".$template."$1.tpl"), $design);

probiert, leider ohne Erfolg (habe auch schon mit "templates/".$template.$1.".tpl" | "templates/".$template."\1.tpl" | "templates/".$template.\1.".tpl" versucht)

Was mache ich fals?

Gruß GalaxyWarrior
 
So vielleicht?
PHP:
function loadFile($file)
{
	ob_start();
	$content = ob_get_contents();
	ob_end_clean();
	return $content;
}

$design = preg_replace("/{(.*)}/isUe", "loadFile(templates/{$template}\\1.tpl)", $design);
 
Hab jetzt mal etwas rumprobiert, leider ging es so wie du gesagt hast nicht.

Ich habe das e am Ende des regulären Ausdrucks entfernt und return $file anstelle von return $content gemacht und bekomme dann als Ausgabe z.B. templates/default/menu.tpl, diese Datei ist auch vorhanden, wenn ich jedoch wieder da e und return $content einfüge dann wird {menu} aus dem String mit nichts ersetzt. Habe es auch schon mit file_get_contents() probiert, aber bringt auch nix.

Gruß GalaxyWarrior
 
Oh man, ich hab ja auch das [phpf]include[/phpf] komplett vergessen :D
PHP:
function loadFile($file)
{
    ob_start();
    include($file);
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}
 
:eek: nun kommt


Warning: include(templates/default/index.tpl) [function.include]: failed to open stream: No such file or directory in .../web0/html/index.php on line 14

Warning: include() [function.include]: Failed opening 'templates/default/index.tpl' for inclusion (include_path='.') in .../web0/html/index.php on line 14


ABER.....

templates/default/index.tpl liegt in .../web0/html/templates/default/index.tpl und ist auch im Browser zu erreichen.

Groß GalaxyWarrior
 
Probier’s mal mit einem absoluten Pfad:
PHP:
$design = preg_replace('/{([a-z]+)}/isUe', 'loadFile($_SERVER[\'DOCUMENT_ROOT\']."/templates/{$template}\\1.tpl")', $design);
 
Ändert leider nichts, wobei es auch nur ohne das e für Evaluieren im reg. Ausdruck, also isU geht. Mit isUe komm:

Fatal error: preg_replace() [<a href='function.preg-replace'>function.preg-replace</a>]: Failed evaluating code: &lt;br /&gt; &lt;b&gt;Warning&lt;/b&gt;: include(/srv/www/htdocs/web0/html/templates/default/index.tpl) [&lt;a href='function.include'&gt;function.include&lt;/a&gt;]: failed to open stream: No such file or directory in &lt;b&gt;/srv/www/htdocs/web0/html/index.php&lt;/b&gt; on line &lt;b&gt;14&lt;/b&gt;&lt;br /&gt; &lt;br /&gt; &lt;b&gt;Warning&lt;/b&gt;: include() [&lt;a href='function.include'&gt;function.include&lt;/a&gt;]: Failed opening '/srv/www/htdocs/web0/html/templates/default/index.tpl' for inclusion (include_path='.') in &lt;b&gt;/srv/www/htdocs/web0/html/index.php&lt;/b&gt; on line &lt;b&gt;14&lt;/b&gt;&lt;br /&gt; in /srv/www/htdocs/web0/html/index.php on line 56
 
Zurück