Willkommen in der Webstatt Zum Webstatt Blog und Stories
Sven Sven 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?
sili sili 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?

Sven Sven 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 :/

Sven Sven 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.

Michael Michael 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";

Sven Sven am 22.04.06 22:18

Also komme ich nicht um preg_match herum :/ Schade. Danke an alle.

nuit nuit 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)

Sven Sven 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 ^^

Michael Michael 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).

Michael

Sven Sven 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