Ankündigung

Einklappen
Keine Ankündigung bisher.

"Template"-Funktion

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • "Template"-Funktion

    Hiho!

    Hab vorhin mal schnell angefangen ne Funktion zu proggen, damit ich in meinen Template-Dateien solche Sachen wie {name} gegen z.b. ne Variable tauschen kann. Ist aber natürlich nervig, wenn man jede zu ersetzende Stelle einzelnd angeben muss usw. Also will ich das ganze jetzt so machen, dass ich die ganzen zu ersetzenden Platzhalter in einen String packe und mit nem Trennzeichen (in diesem fall ";;") trenne und das gleiche mit den Texten, welche die Platzhalter überschreiben. Noch schön in ne Funktion verpackt dann schauts bei mir so aus ^^ :

    Code:
    function template($file, $search, $replace)
    {
        $file = file($file);
        $search = explode(';;', $search);
        $replace = explode(';;', $replace);
        
        $searchcount = count($search);
        $replacecount = count($replace);
        
        IF ($searchcount != $replacecount)
        {
            echo "Hinweis: Arrays haben nicht gleich viele Elemente.";
        }
        
        FOR($i = 0; $i >= $searchcount; $i++)
        {
            $file = str_replace($search[$i], $replace[$i], $file);
        }
        
        $file = implode($file);
    
        echo $file;
    }
    Einzigstes Problem: Funktioniert nicht ...wo liegt der Fehler? ...ich tippe mal auf die Schleife

    jo, und so sollte es dann aufgerufen werden:

    Code:
    template('test.htm','{name}','Mister X');
    ...bei mehreren zu ersetzenden Platzhaltern hab ichs mir dann so vorgestellt:

    Code:
    template('test.htm','{name};;{rollmops}','Mister X;;Fisch');
    naja, müssts halt nur noch funktionieren ^^
    Wäre dankbar, wenn Ihr da ne Lösung wisst

  • #2
    Code:
    $i >= $searchcount;
    recht sinnfrei, oder?
    $i is doch nie größer oder gleich, wenns am anfang 0 ist!

    Kommentar


    • #3
      Also, erstmal zu deiner Platzhalter erfindung! Das geht einfacher, daher str_replace auch Arrays akzeptiert!
      Also am besten die zu ersetzenden Strings in ein Array!
      So:
      $such = array("{name}", "{rollmops}");
      $ersetz = array("Mister X", "Fisch");
      template('test.htm',$such,$ersetz);[/code]

      In deiner Funktion muss dann das ersetzen so aussehen:
      Code:
      function template($file, $search, $replace)
      {
          $file = file($file);
          $searchcount = count($search);
          $replacecount = count($replace);
         IF ($searchcount != $replacecount)
          {
              echo "Hinweis: Arrays haben nicht gleich viele Elemente.";
          }
          else
          {
              $file = str_replace($search, $ersetz, $file);
          }
         $file = implode($file);
         echo $file;
      }

      Kommentar


      • #4
        ahh geil danke, funktioniert

        Kommentar

        Lädt...
        X