Klaus1: Platzhalter in einem MySQL-Tabellenfeld automatisch ersetzen möglich?

Hallo,

in einem mySQL-Tabellenfeld habe ich einen Text, der Platzhalter enthält, die natürlich vor Ausgabe ersetzt werden sollen.

Der Text sieht z.B. so aus: Zugang gültig bis {stichtag}.

{stichtag} soll dann durch den Inhalt der Variable $stichtag ersetzt werden.

Bisher mache ich das mit einem Suchen und Ersetzen vor der Ausgabe. So ähnlich wie hier: Stackoverflow

Geht das aber nicht vielleicht schon automatisch? Ich habe es probiert mit Zugang gültig bis $stichtag. und auch mit Zugang gültig bis ".$stichtag.". In allen Fällen wird aber nur $stichtag als Text ausgegeben.

Gibt es da vielleicht einen Trick, wie man ohne Suchen&Ersetzen auskommen könnte und den Platzhalter als Variable erkannt und direkt ersetzt wird?

LG Klaus

  1. Tach!

    {stichtag} soll dann durch den Inhalt der Variable $stichtag ersetzt werden.

    Bisher mache ich das mit einem Suchen und Ersetzen vor der Ausgabe. So ähnlich wie hier: Stackoverflow

    Geht das aber nicht vielleicht schon automatisch?

    Das ist doch bereits automatisch genug, oder?

    Ich habe es probiert mit Zugang gültig bis $stichtag. und auch mit Zugang gültig bis ".$stichtag.". In allen Fällen wird aber nur $stichtag als Text ausgegeben.

    Wenn du das in Kombination mit echo meinst, dann ist das so. Der Wert kommt bereits als String von der Datenbank. PHP parst aber nur Code und String**-Literals** darin, wenn sie in doppelten Anführungszeichen daherkommen.

    Eine Möglichkeit wäre, den String zu einem Stringliteral zu konvertieren und dann eval() zu benutzen. Aber vergiss das lieber ganz schnell wieder! Das spart dir einerseits kaum Arbeit, andererseits reißt der gesamte Wunsch nach einem solchen Automatismus nur eine große Sicherheitslücke ins System, besonders dann, wenn die Texte von Nutzern eingegeben werden können. Besser ist eine Funktion, die nur genau die erlaubten Werte zu ersetzen vermag, und nicht alles ausgeben und ausführen kann, was im aktuellen Scope erreichbar ist (wozu auch $_GLOBALS zählt).

    Gibt es da vielleicht einen Trick, wie man ohne Suchen&Ersetzen auskommen könnte und den Platzhalter als Variable erkannt und direkt ersetzt wird?

    Don't try this at home.

    dedlfix.

    1. Ok, vielen Dank für die Antwort. Dann eben weiterhin mit den Platzhaltern und Suchen&Ersetzen.

      LG Klaus

      1. Ok, vielen Dank für die Antwort. Dann eben weiterhin mit den Platzhaltern und Suchen&Ersetzen.

        Eine TE macht auch nichts anderes. Aber vielleicht auch ein bischen mehr als nur das.

        MfG

  2. Hi,

    also ein Template rendern. Gibts doch alles schon, warum selber bauen?

    MfG

    1. Tach!

      also ein Template rendern. Gibts doch alles schon, warum selber bauen?

      Ein Framework entwickeln? Gibts doch alles schon, warum selber bauen?

      dedlfix.

      1. Tach!

        also ein Template rendern. Gibts doch alles schon, warum selber bauen?

        Ein Framework entwickeln? Gibts doch alles schon, warum selber bauen?

        Es gibt immer Gründe. Deswegen hab ich ja gefragt. MfG

  3. Tach!

    Bisher mache ich das mit einem Suchen und Ersetzen vor der Ausgabe. So ähnlich wie hier: Stackoverflow

    Welche der Antworten dort? Die einfachste Variante ist die Lösung mit dem strtr(). Array aufbauen, und zusammen mit dem String an strtr() übergeben, fertig. Gedanken muss man sich dabei nur noch machen, dass die Werte passend maskiert für den jeweiligen Ausgabezweck ersetzt werden.

    dedlfix.

  4. Lieber Klaus1,

    Geht das aber nicht vielleicht schon automatisch?

    wo(!) meinst Du mit "automatisch"? In der Datenbank selber? Oder doch erst später in PHP?

    Liebe Grüße,

    Felix Riesterer.