Nur bestimmte Platzhalter ersetzen [ungelöst]


#1
Hallo zusammen,
ich baue gerade ein kleines MVC und jetzt soll wenn ein das Template gesetzt wird die Platzhalter durch die Daten aus der Datenbank ersetzt werden.
Wie kann ich die Platzhalter aus dem Template auslesen und nur diese Daten aus der Datenbank lesen?
Ansatz:
Template :
HTML:
<html>
    <head>
        <title>{VAR:title}</title>
    </head>
    <body>
        <p>
            {VAR:header}
        </p>
        <aside>
            {MOD:search} <!-- MOD steht für Modul -->
        </aside>
    </body>
</html>
Also jetzt soll irgendwie die Variable title, header und das Modul in der Datenbank gesucht und asugegeben werden.
Hat einer Eine Idee wie man das lösen kann?
Vielen Dank im voraus.
 
#3
Ich weiss zwar wie es ohne datenbank bwz. mit geht.
B.s.p:
PHP:
    $index = new Template(PATH_TO_TEMPLATES.TEMPLATE."/index.tpl");
  $index->replace_marker("title", "Test");
  $index->replace_marker("header", "Dies ist eine Überschrift");
  $index->replace_marker("search", "Such modul");
  $indexResult = $index->get_content();
Aber ich möchte ja die Platzhalter irgendie zählen dann sie in der Datenbank suchen und dann ersetzen
ohne jedes einzeln (wie oben genannt) zu definieren (jedes Template braucht eventuell andere Daten)
 

Sempervivum

Erfahrenes Mitglied
#5
Geht nicht gibt's nicht. Wenn ich richtig verstehe, was Du vorhast, sollte es so gehen:
PHP:
// Testweise ein Array an Stelle der Datenbank
$params = [
    "{VAR:title}" => "Der Titel",
    "{VAR:header}" => "Der Header",
    "{MOD:search}" => "Die Suche",
];
$tpl = file("thread58-template.html");
$result = '';
foreach ($tpl as $line) {
    preg_match_all ("/\{[A-Z]{3}:[a-z]+\}/", $line, $matches, PREG_SET_ORDER);
    var_dump($matches);
    foreach($matches as $cmatch) {

        // Hier muesste der Wert des Platzhalters aus der Datenbank gelesen werden
        $replacement = $params[$cmatch[0]];
       
        $line = str_replace ($cmatc[0], $replacement, $line);
    }
    $result .= $line;
}
echo $result;
 

Neue Beiträge