[REGEX] Rekursives parsen loop Tags, aber wie?

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

  • [REGEX] Rekursives parsen loop Tags, aber wie?

    Also ich würde gerne in folgendes mit Regulären Ausdrücken umbasteln:

    Das hier ist der Anfangstring dieser soll nun zu folgendem werden:
    PHP-Code:
    {loop=$categories name=first_level}
      {
    loop=$first_level name=second_level}
        ....
      {/
    loop}
    {/
    loop}
    ...
    {
    loop=$names name=$namen}
     .....
    {/
    loop
    Ziel String:

    PHP-Code:
    <?php foreach( $categories_name as $first_level ) { ?>
     <?php foreach( $first_level as $second_level ) { ?>
        ....
      <?php ?>
    <?php 
    }  ?>

    <?php foreach( $names as $name ) { ?>
        ....
     <?php ?>
    Hat da irgendjemand eine Idee wie ich das Umsetzen könnte bin hier im Forum berreits auf diesen Beitrag gestoßen:
    http://www.php-resource.de/forum/sho...threadid=45908
    allerdings ist es mir nicht gelungen den Code irgendwie so umzuschreiben, dass er für mich funzt. Hier mal mein Ansatzt:

    PHP-Code:
    function parse_loop( $tpl, $level = 1) {
               
            $pattern     = '#\{loop=\$(.+?) name=(.+?)\}((([^\[]*)|(?R))*)\{/loop\}#isUe';
            $replacement = "<?php foreach( \$$as \$$) { echo \".$this->parse_loop('\\3', ".($level+1).").\" ?>";
        
            
            return 
    preg_replace ($pattern$replacement$tpl);
          }
    daniel-portal.com/games Free Games and more

  • #2
    sieh dir mal eval an. Ich denke mal das dir das helfen wird.

    Kommentar


    • #3
      Original geschrieben von LukasS
      sieh dir mal eval an. Ich denke mal das dir das helfen wird.
      daniel-portal.com/games Free Games and more

      Kommentar


      • #4
        hallo, du musst natürlich bei der negierten klammer deine tag-delimiter angeben... und nicht die von derHund dort lassen


        P.S.: 1.) Ist eval scheiße und 2.) wirds ihm hier auch net helfen!
        Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
        var_dump(), print_r(), debug_backtrace und echo.
        Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
        Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
        Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

        Kommentar


        • #5
          Hm ich bekomms trotzdem nicht hin, ich hab meine Funktion jetzt wie folgt geupdated:

          PHP-Code:
          function parse_loop( $tpl, $level = 1) {
                     
                  $pattern     = '#\{loop=\$(.+?) name=(.+?)\}((([^\{]*)|(?R))*)\{/loop\}#isUe';
                  $replacement = "'<?php foreach( \$$as \$$) { echo \".$this->parse_loop('\\3', ".($level+1).").\" ?>";
                  
                  return 
          preg_replace ($pattern$replacement$tpl);
              }
          Aber ich bekomme nun die folgende Meldung:
          3x

          Notice: Undefined property: template::$parse_loop in C:\Programme\xampp\htdocs\Daniel-Portal\core\daniel_template\daniel_template.php on line 261
          daniel-portal.com/games Free Games and more

          Kommentar

          Lädt...
          X