Mailinglisten-Archive |
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