Steffen: {$var} durch PHP-Variable ersetzen

Hallo,
also per fopen()/file_get_contents() lade ich eine gesamte Textdatei.

Diese Textdatei enthält jetzt Variablen im folgenden Format:
Hallo {$username}

Jetzt soll {$username} durch eine PHP-Variable ersetzt werden, also ca. so:
Hallo <?php echo $this->varArr['username']; ?>

Also soetwas wie es bei Templates-Engines wie z.B. Smarty gibt.

Naja das wäre ja noch einfach, aber gleichzeitig soll noch eine Überprüfung stattfinden.
z.B.
{$var['username']} => $this->varArr['var']['username'];
Aber:
{$var test} bleibt unverändert, da ungültig.

Naja kennt jmd. evt. eine übersichliche Class/Funktion, die dieses realisiert?
Bei Smarty ist mit das zu extrem versachtelt :/

MFG
Steffen

  1. http://www.it-academy.cc/content/article_browse.php?ID=1357

    Vielleicht hilft dir das hier.

    1. Hallo,

      http://www.it-academy.cc/content/article_browse.php?ID=1357

      Vielleicht hilft dir das hier.

      das hilft leider nicht weiter.
      Und zwar soll er nicht die Werte ersetzen, sondern die Templates Variablen durch PHP Variablen.

      Also aus:
      Hallo {$username}

      Wird:
      Hallo <?php echo $this->varArr['username']; ?>

      Dieses Ergebnis wird dann gespeichert und per include geladen.

      Grüße
      Steffen

      1. Und zwar soll er nicht die Werte ersetzen, sondern die Templates Variablen durch PHP Variablen.

        Das tut es ja, ;-) es speichert nur nix..

      2. Ahoi Steffen,

        Und zwar soll er nicht die Werte ersetzen, sondern die Templates Variablen durch PHP Variablen.

        Also aus:
        Hallo {$username}

        Wird:
        Hallo <?php echo $this->varArr['username']; ?>

        str_replace('{$username}', '<?php echo $this->varArr['username']; ?>', $string);

        wichtig hirbei ' statt " verwenden. willst du " verwenden musst du $var machen.

        http://de2.php.net/manual/de/function.str-replace.php

        MfG

        --
        Alle Angaben wie immer ohne Gewähr
        1. Hallo,
          es wäre schön wenn es soooo einfach wäre.

          Denn die Template-Funktion kennt natürlich nicht, welche Variablen ersetzt werden => alle gültigen werden in PHP überführt.

          Denn so wie du es gemacht hast, müsste die Funktion das Template immer wieder neu kompilieren, so aber nur 1 mal und dann nur noch per include laden.

          Also bitte keine weiteren str_replace() Funktionen/Varianten nennen, so einfach ist es nicht!

          Grüße
          Steffen.

  2. echo $begrüßung;

    Diese Textdatei enthält jetzt Variablen im folgenden Format:
    Hallo {$username}

    Ist das so unveränderlich vorgegeben, oder hast du das zuerst fabriziert und schreibst nun eine passende Template-Engine drumrum?

    Jetzt soll {$username} durch eine PHP-Variable ersetzt werden, also ca. so:
    Hallo <?php echo $this->varArr['username']; ?>
    {$var['username']} => $this->varArr['var']['username'];
    {$var test} bleibt unverändert, da ungültig.

    Vielleicht helfen dir die Tokenizer Functions.
    Ansonsten erachte ich reguläre Ausdrücke als hilfreich.
    Ich hatte zuerst auch noch eval() in Erwägung gezogen, aber dann musst du zum einen vorher wissen, welche Variablen vorkommen (können) und zum anderen scheitert das am Syntax-Fehler von {$var test}.

    Das Verwenden einer Template-Engine und ggf. Umschreiben der Texte kommt nicht in Frage?

    echo "$verabschiedung $name";