Willkommen in der Webstatt
User-1 am 16.04.06 16:04

Jow, der Titel sagt eigentlich schon alles.
Erstmal der Code :
<?php
function replace_tpl ($category, $string, $is_function = '0') {
$pattern = '/{' . $category . ': (.*)}/is';

if ($is_function == '1') {
$string = preg_replace ($pattern, $category('\\1'), $string);
} else {
$string = preg_replace ($pattern, $\\\\1, $string);

return $string;
}
?>


Wie ihr sehen könnt, hätte ich gerne das Ergebnis der Suche mit (.*) als Variablenname im else-Teil unten. Mir ist klar das das so nicht klappt, dient nur zur veranschaulichung ;)
Hat jemand eine Idee wie ich das am Geschicktesten mache? Ich würde gerne darauf verzichten zuvor mir preg_match(_all) zu arbeiten :/

netcup.de Warum gibt es hier Werbung?
User-2 am 16.04.06 16:33

Ich werde aus deiner Veranschaulichung nicht schlau :)
Was willst du mit $category('\\1') andeuten? Diese Syntax wird doch bei anonymen / temporären Funktion verwendet.
Wie soll das ganze nach der Ersetzung aussehen?

User-1 am 16.04.06 16:46

Es geht eher um den else-Zweig.
$string = preg_replace ($pattern, $\\1, $string);

Hier möchte ich eben das Ergebnis der Suche als Variablennamen haben.
Als Beispiel also so :

<?php
$string = '{navigation: last_news} ist toll';
$string = replace_tpl ('navigation', $string);
?>


Intern dann eben so :
<?php
$pattern = '/{navigation: (.*)}/is';
$string = preg_replace ($pattern, $last_news, $string);
?>


Schwierig zu erklären :/

User-1 am 22.04.06 21:14

Ich grabe den Thread jetzt einfach nochmal aus. Also vielleicht ist die Formulierung besser : Wie bekomme ich den per RegEx gefundenen Wert als Variabelnamen raus?
Also sowas wie {navigation: news} dann steht mir die Variable $news zur Verfügung.

User-3 am 22.04.06 22:02

$string = 'yy {navigation: edit} xx';

if(preg_match('/{(.*?): (.*?)}/si',$string,$result)) {
$name = $result[2];
$wert = $result[1];
$$name = $wert;
}

print "\$edit: $edit";

User-1 am 22.04.06 22:18

Also komme ich nicht um preg_match herum :/ Schade. xyz-48ke an alle.

User-4 am 22.04.06 23:01

also ich mach es in meiner Template klasse so, dass ich es mit preg_match auslese und dann in ein array abspeicher...später ersetz ich es mit str_replace, weil man das ja wieder zusammensetzen kann ;D

gruss Jan (nur so als anregung)

User-1 am 22.04.06 23:10

Jo, das ist mir dann soweit schon klar. Dachte nur das ich das ganze in einem Schritt automatisieren kann ^^

User-3 am 23.04.06 09:39

Hmm ich bin mir leider noch unsicher wie das Ergebnis aussehen soll. Mein Beispiel sollte tendenziell eher das Prinzip dynamischer Variablennamen verdeutlichen.
Vielleicht kannst du noch einmal ein Beispiel posten (also insbesondere wie der String vor und nach dem Ersetzen ausehen soll).

xyz-141el

User-1 am 23.04.06 20:34

Schon okay so, danke nochmal für die Hilfe.

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt