Ankündigung

Einklappen
Keine Ankündigung bisher.

Hilfe bei eigenem tpl system

Einklappen

Neue Werbung 2019

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

  • Hilfe bei eigenem tpl system

    Hallo hab mir mal nen eigenen tpl parser geschrieben (ist nicht gerade der beste aber sollte erstmal reichen) jetzt fehlt mir nurnoch eine sache wo ich momentan kein plan hab wie ich die einbauen soll und zwar möchte ich auch schleifen parsen können (für z.B News die aus der Db ausgelesen werden und mehrere angezeigt werden)

    naja hier mal mein code

    PHP-Code:
    <?php
    class tpl {

    var 
    $path;
    var 
    $contents;
    var 
    $content;
    var 
    $handle;

    ############         Für das Parsen von normalen dateien             ##########################
    function load ($template)
    {
    $pfad "template/";
    $end ".tpl";

    $this->path $pfad.$template.$end;
    $this->handle = @fopen($this->path,"r");
    if (!
    $this->handle)
    {
    echo 
    "Konnte Datei <font color="red">($this->path)</font> nicht öffnen";
    exit();
    }
    $this->contents implode("",file($this->path));
    fclose ($this->handle);
    }

    function 
    replace($search,$replace)
    {
    $this->contents str_replace("{$".$search."}"$replace,$this->contents);
    }

    function 
    get()
    {
    echo 
    $this->contents;
    }

             }

    ############         Für das Parsen von db daten         ##########################
            
    function sql_load($table,$where)
    {
    $this->sql "SELECT content from ".$table." where name ='".$where."'";
    $this->sql_query =mysql_query($this->sql);
    while(
    $row mysql_fetch_object($this->sql_query))
    {
    $this->content =$row->content;
    }

    }

    function 
    sql_replace ($search,$replace)
    {
    $this->content str_replace("{$".$search."}"$replace$this->content);
    }

    function 
    sql_get()
    {
    echo 
    $this->content;
    }         
    ?>

    mein versuch:
    PHP-Code:
    <?php
    function replace_array($search,$replace)
    {
    if (
    is_array($replace))
    {

    foreach (
    $replace as $key => $value) {
    $this->contents str_replace("{$".$search."}"$value,$this->contents);
    }


    }else
    {
    echo 
    "<font color="red">$replace ist kein array";
    }

    }
    ?>
    das array dazu

    PHP-Code:
    <?php
    $arr 
    = array("eins""zwei""drei");
    ?>
    jetzt gibt er nur eins aus <.< und desweiteren hab ich das problem das ich die angaben nicht mit
    untereinnander ausgeben kann bzw kann ich dann nicht z.B <td>{$platzhalter}</td>
    wiederholt ausgeben

    hoffe kann mir jemand helfen (was bestimmt der fall ist ^^)
    soll eben für abfragen aus der db sein

  • #2
    das habe ich einmal programmiert ... ist recht kompliziert

    du musst für jeden template-befehl eine funktion aufrufen, die den inhalt des befehls abarbeitet...
    Du musst den Teil den du wiederholen willst eingrenzen.
    Diese funktion wird so lange mit dem inhalt des begrenzten bereiches aufgerufen, wie noch daten vorhanden sind...

    Kommentar


    • #3
      Schau mal hier:
      http://www.inphpfriend.de/forum/showthread-t_124.html
      Wie man mit Schleifen umgeht, ist ein paar Posts darunter auch erwähnt.

      Kommentar


      • #4
        warum immer so kompliziert ???

        bsp.:
        PHP-Code:
        <?php

        function replace($search,$replace)
        {
        $this->contents str_replace("{$".$search."}"$replace,$this->contents);
        }
        ?>

        viel einfacher !

        PHP-Code:
        <?php

        $variable
        ="[b]Hallöchen[/b]";
        $date=date("d.m.Y"time());

        $str='
        <a>ein html tag {$variable}</a>
        ...{$date}
        some more ...
        '
        ;

        eval(
        'echo "'.$str.'";');

        ?>

        notfalls sich hier ein paar ideen holen

        http://phpfuncs.org/?content=show&id=27&sid=

        Kommentar

        Lädt...
        X