phpbar.de logo

Mailinglisten-Archive

[php] Variable Variabeln

[php] Variable Variabeln

Dominik Brumm dominik.brumm_(at)_voodooweb.com
Mon, 18 Sep 2000 23:35:04 +0200


Hey das ist ja (fast) genial, merci viel mals....

Eingentlich wollte ich gerade im Manual nachschauen was e für eine Option
ist,
und da meldet mir PHP:
Warning: Unknown option 'e' in /home/voodoow/public_html/test_cont/temp.php
on line 14

benutze PHP 3.0.9....

Noch eine frage, warum verwendest du ' ' und ; beim eval??

Ich hatte vorallem Probleme mit den variablen Variabeln, und eval kapiere
ich sowie so nicht.

wäre toll wenn du das auch noch zurecht biegen kannst...

gruss dominik

----- Original Message -----
From: "Thomas Feyrer" <Dante_(at)_altmuehlnet.de>
To: <php_(at)_php-center.de>
Sent: Monday, September 18, 2000 8:53 PM
Subject: Re: [php] Variable Variabeln


At 13:50 18.09.2000 +0200, Dominik Brumm wrote:
>In der Template-Datei sieht die Title Zeile so aus:
><title>{%PAGE.TITLE%}</title>
>Die Template Klasse hat ein Array $this->VARS welches alle Variabeln
>enthält.
>Der "Interpreter" sollte anhand von PAGE.TITLE auf den Wert von
>$this->VARS[page][title] zugreifen. Danach wird der Wert mit einem
>str_replace
>eingefügt.
>Ich denke mit variablen Variabeln könnte ich eine einfache Lösung finden
für
>die
>die Umwandlung von PAGE.TITLE nach $this->VARS[page][title].
>Das ganze sollte dynamisch sein, keine Begrenzung der Dimensionen.

Hi Dominik,

OK... war mal wieder ne schöne Lernaufgabe für mich, hat ne halbe Stunde
gebraucht, bis ich das Ziel erreicht hatte ;)

Die Klasse in der angehängten Datei, schafft genau das was du willst,
und das im Grunde durch EINE einzige Zeile:
preg_replace('/{%([^%]*)%}/e', 'eval("return
\$this->VARS[\"".implode("\"][\"", explode(".", "\\1"))."\"];");', $string);

.... schön ... ;)

Die Variable $string, die du der Funktion parse_string($string) übergibst,
muss einfach den Kompletten Inhalt der Template-Datei enthalten, incl.
Zeilenumbrüchen... (ausser du hast mehrere Templates innerhalb einer Datei)
Läuft wunderbar unter PHP4/Win98

Wenn ich es erklären soll, sagt es. Freiwillig mach ich das jetzt
im Moment nicht... Wär mehr arbeit als das coden ;)

PS: Ich muss zugeben, ich war mal bei Perl... da schafft man ja
    bekanntlich alles  innerhalb einer Zeile... Ich versuche das
    in PHP auch immer so zu machen ;)

PPS: Waren die Guru's hier auf der Liste zu faul, diese Problem
auszutüfteln?

Bye & Thanks für die schöne Aufgabe
  Dante


----------------------------------------------------------------------------
----


>
>



php::bar PHP Wiki   -   Listenarchive