Ergebnis 1 bis 20 von 53

Thema: [Vorstellung] tHE fAKE pAGE!

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #19
    Ist auch reichlich unsicher. Mit eval() kann man theoretisch unbegrenzten Schaden anrichten... Diese Funktion gilt im Allgemeinen als extrem unsauber und sollte nach Möglichkeit vermieden werden.


    Ich mache Templates für gewöhnlich so:
    1. Das Template selbst
    Genau wie bei dir einfach eine Datei mit Platzhaltern. Die haben bei mir ein anderes Format (üblicherweise %PLATZHALTER% oder {PLATZHALTER}), ansonsten ist es aber gleich. Das andere Format rate ich dir, damit du hinterher nicht groß escapen mußt. Alternativ kannst du auch einfach den zu ersetzenden Text in '' statt "" verpacken; damit werden Variablennamen nicht geparst (siehe unten).

    2. Der Code
    In PHP lade ich den Inhalt der Templatedatei in eine Variable und füge da per str_replace() meinen Kram ein.

    Ein simples Beispiel:
    template.htm
    Code:
    <h1>%ÜBERSCHRIFT%</h1>
    <p>Heute ist der %DATUM%.</p>
    <p>Noch ein Wert: $replace["me"].</b>
    template.php
    Code:
    <?php
      $template = file_get_contents('template.htm');
      $template = str_replace('%ÜBERSCHRIFT%', 'Beispiel', $template);
      $template = str_replace('%DATUM', date('d.m.Y'), $template);
    
      // Das funktioniert nicht, weil PHP den Variablennamen auflöst:
      $template = str_replace("$replace[\"me\"]", 'Hurra', $template);
    
      // Das funktioniert.
      $template = str_replace('$replace["me"]', 'Hurra', $template);
    
      echo $template;
    ?>

    Ach ja, du kannst den Kram natürlich auch automatisieren:
    Code:
    // Mal an deinem Setup-Template orientiert
    foreach ($lang as $key => $value)
    {
      $template = str_replace('$lang["'.$key.'"]', $lang[$value], $template);
    }

    Geändert von Jesus_666 (18.06.2007 um 21:15 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •