Template Parser parst PHP Code nicht[Profis]

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

  • Template Parser parst PHP Code nicht[Profis]

    Moinsen,

    habe ein Problem mit meinem Template Parser:

    Also das ist sind die Betreffenden Code Zeilen, die eigentlich die PHP Funktionen und Variablen umwandeln sollten ....

    PHP-Code:
        preg_match_all("<\?php(.*)\?>"$to_parse$parse2);  // weist der Variablen parse_vars_n die Werte zu 
        
    for($z=0$z count($parse2[1]); $z++) 
            {
                    
                    
    $replace             =     eval($parse2[1][$z]);
                    
    $to_parse            =     ereg_replace($parse2[1][$z], $replace$to_parse);
            } 
    $to_parse ist dabei die Template Datei welche wie folgend aufgebaut ist:

    PHP-Code:
    <?php smalltable(); ?>
    <table><tr><td>Statistiken:</td></tr>
      <tr><td>Gesamt Beitr&auml;ge:</td>
        <td>{posts}</td>
      </tr>
      <tr>
        <td>Dabei seit:</td>
        <td>{joined}</td>
      </tr></table>
    <?php closetable(); smalltable(); ?>
    er generiert aber leider nicht alle Tabellen, sondern zerhaut mit der Funktion das gesamte Design, obwohl sie eigentlich helfen sollte es zu "verbessern .

    Warum könnte es nicht klappen, das er die Keywords nicht ordentlich ersetzt?

  • #2
    wie sehen die fkts aus?

    Kommentar


    • #3
      Achso, hier ist nochma nen Stück Code daraus:

      PHP-Code:
      <table><tr><td>Statistiken:</td></tr>
        <tr><td>Gesamt Beitr&auml;ge:</td>
          <td>0</td>
        </tr>

        <tr>
          <td>Dabei seit:</td>
          <td></td>
        </tr></table>
      <?php closetable();?>
      <table>
        <tr>
          <td>Kommunikation:</td>
        </tr>

        <tr>
          <td>E-mail:</td>
          <td>admin@optima-design.de</td>
        </tr>
        <tr>
          <td>ICQ:</td>
          <td>13339863</td>

        </tr>
        <tr>
          <td>AIM</td>
          <td>USmuffin</td>
        </tr>
        <tr>
          <td>MSN:</td>

          <td>muffinmeal@hotmail.com</td>
        </tr></table>
      <?php?>
      Man sieht darin das der Parser seiner Arbeit nicht getan hat ( an den <?php?> ) und auch shonst fehlen dort sämliche Tabellen öffnen und Schliessbefehle.

      Ich habe schonmal ausprobiert und mit einem einizigen PHP Code in der Datei klappt es auch ....

      Original geschrieben von TobiaZ
      wie sehen die fkts aus?
      Welche fkts??? Was meinste damit?

      Kommentar


      • #4
        Möchtest du uns sagen das der Code so an dem Browser ausgegeben wird:

        PHP-Code:
        </tr></table>
        <?php closetable();?>
        <table>
        also wird dir auch <?php closetable();?> angezeigt?
        mfg
        marc75

        <Platz für anderes>

        Kommentar


        • #5
          Er meint bestimmt, was ausgegeben wird, oder was die funktion (fkt) zurückgibt..
          PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

          Kommentar


          • #6
            So nach weiteren Experimenten kam ich zu dem Ergebniss, das sich die eval() Funktion vielleicht nicht durch str_replace und Konsorti ersetzen lassen will, kann das sein? Weil an der Stelle wo die Tabellen sein sollten ist ja gähnende leere und es steht nur <?php ?> da und das soll ja nicht so sein.

            Das wird ausgegeben:

            http://www.optima-design.de/prob.jpg

            Eigentlich sollte das da Formatiert sein *g*.

            und der betreffende HTML Code da ist:

            /td><td valign="top" width="515px" margin-left="0px"><table border="0" cellspacing="1" width="650" cellpadding="1"><tr><td><table border="0" cellspacing="0" width="100%" cellpadding="0"><td><td></td></tr></table></td></tr></table><table border="0" margin-left="0px" width="100%" cellspacing="1" cellpadding="1"><tr><td><table border="0" cellspacing="0" width="100%" cellpadding="0"><td><td class="body"><b class="large">Muffin</b></td></tr></table></td></tr></table><table border="0" margin-left="0px" width="48%" align="left" cellspacing="1" cellpadding="0"><tr><td><table border="0" cellspacing="0" width="100%" cellpadding="0"><td><td class="news"></td></tr></table></td></tr></table><table border="0" margin-left="0px" width="48%" align="left" cellspacing="1" cellpadding="0"><tr><td><table border="0" cellspacing="0" width="100%" cellpadding="0"><td><td class="news"></td></tr></table></td></tr></table><?php?>
            Wobei mir das da oben so aussieht als wären alle Befehle auf einmal ganz oben ausgegben und nicht an deren Platz ...


            <table><tr><td>Statistiken:</td></tr>
            <tr><td>Gesamt Beitr&auml;ge:</td>
            <td>0</td>
            </tr>

            <tr>
            <td>Dabei seit:</td>
            <td></td>
            </tr></table>
            <?php?>
            <?php?>
            <table>
            <tr>
            <td>Kommunikation:</td>

            </tr>
            <tr>
            <td>E-mail:</td>
            <td>admin@optima-design.de</td>
            </tr>
            <tr>
            <td>ICQ:</td>

            <td>13339863</td>
            </tr>
            <tr>
            <td>AIM</td>
            <td>USmuffin</td>
            </tr>
            <tr>

            <td>MSN:</td>
            <td>muffinmeal@hotmail.com</td>
            </tr></table>
            <?php ?>

            Kommentar


            • #7
              Welche fkts??? Was meinste damit?
              na, die smalltable, und die closetable(); ... was liefern die?

              PHP-Code:
              $replace             =     eval($parse2[1][$z]);
              $to_parse            =     ereg_replace($parse2[1][$z], $replace$to_parse); 
              wenn ich das richtig seh, ersetzt du hier das zwischen den <?PHP ?> mit irgendwas, die <?PHP ?> bleiben erhalten ...
              Die Zeit hat ihre Kinder längst gefressen

              Kommentar


              • #8
                Wobei mir das da oben so aussieht als wären alle Befehle auf einmal ganz oben ausgegben und nicht an deren Platz ...
                wo dran das wohl liegen mag. die funktionen beinhalten nicht zufälligerweise ne ausgabe anstatt ner rückgabe?
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  Ähm, ich kann den Quellcode deine Funktionen immer noch nicht sehen!

                  Kommentar


                  • #10
                    Dies ist der Quelltext der PHP Ersetzung:

                    PHP-Code:
                    preg_match_all("<?php(.*?)?>", $to_parse, $parse2);
                        for($z=0; $z < count($parse2[1]); $z++) 
                            {
                                    
                                echo $parse2[1][$z];
                                    $replace                 =     eval($parse2[1][$z]);
                                    $to_parse                =     str_replace($parse2[1][$z], eval($parse2[1][$z]), $to_parse);
                                    
                            }
                    PHP-Code:
                    // öffnet die Template datei :)
                    $file              "module/user/".$this->datei."";
                    $fp                 fopen($file"r");
                    $to_parse        fread($fpfilesize($file)); 
                    Und so wird das Template geladen.


                    Brauchste noch mehr Funktionen?
                    Eigentlich sind das alle Relevanten.

                    Kommentar


                    • #11
                      sagmal, liest du auch wirklich, was derHund und ich hier schreiben???

                      Kommentar


                      • #12
                        Die Funktion smalltable() und closetable beinhalten eine Ausgabe
                        PHP-Code:
                        function smalltable()
                        {
                        echo 
                        "<table border=\"0\" margin-left=\"0px\" width=\"48%\" align=\"left\" cellspacing=\"1\" cellpadding=\"0\"><tr><td>";
                        echo 
                        "<table border=\"0\" cellspacing=\"0\" width=\"100%\" cellpadding=\"0\"><td><td class=\"news\">";


                        Das geben sie aus, das wird im gesamten CMS so angewendet ( also einfach smalltable() hingeschrieben um ne kleine Tabelle aufzumachen etc).

                        Das mit der Ausgabe meint Ihr so, das diese Sofort ausgegeben werden und der Code nicht in das Template Impliziert wird oder?

                        Mmmh, dann muss ich dadrann wohl was verändern, entweder das CMS ganz auf Templates umschreiben und die Tabellen alle so aufrufen oder Testen ob es auch anders geht ...

                        Kommentar


                        • #13
                          manschmal

                          dann guck dir mal das hier an:

                          PHP-Code:
                          $replace             =     eval($parse2[1][$z]); 

                          Kommentar


                          • #14
                            Original geschrieben von TobiaZ
                            manschmal

                            dann guck dir mal das hier an:

                            PHP-Code:
                            $replace             =     eval($parse2[1][$z]); 
                            ES klappt aber auch nicht wenn ich die $replace rausnehmen , sondern das genau in der str_replace funktion mache, oder ist es da genau das selbe Spiel?

                            Kommentar


                            • #15
                              Ohh man, ich werd noch Wahnsinnig mit dem Scheiss Script .

                              Nun sagt er mir bei der Preg_match_all "
                              Warning: Compilation failed: nothing to repeat at offset 0 in F:\htdocs\optima\includes\template.php on line 22"

                              WAS SOLL DAS NUN WIEDER?

                              Da hat man noch nicht mal das erste Problem fertig, da kommt gleicht das nächste

                              Kommentar

                              Lädt...
                              X