Überschneidung

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

  • Überschneidung

    Hallo zusammen..
    Ich bin gearade dabei in meinen Templateparser eine Template-If funktion einzubauen. Ist eigendlich noch relativ schwierig weil ich kein Regex kann, werde es aber bald lernen.

    Konkret sieht mein Problem so aus:
    PHP-Code:
    <?php
    $tpl 
    'Der status ist 1!
    {ELSEIF status == 2}
    Der Status ist 2!!
    {ELSEIF status == 3}
    Der Status ist 3!
    {ELSEIF status == 4}
    Der Status ist 4!!
    {ELSE}
    Der Status ist werder 1 noch 2 oder 3!'
    ;
    preg_match_all('!\{ELSEIF (.*)\}(.*)\{ELSEIF !isU'$tpl$arr);
    var_dump($arr);
    ?>
    Die Ausgabe dazu ist:
    Code:
    array(3) {
      [0]=>
      array(1) {
        [0]=>
        string(48) "{ELSEIF status == 2}
    Der Status ist 2!!
    {ELSEIF "
      }
      [1]=>
      array(1) {
        [0]=>
        string(11) "status == 2"
      }
      [2]=>
      array(1) {
        [0]=>
        string(20) "
    Der Status ist 2!!
    "
      }
    }
    Nun zum Problem:
    Im Array $arr werden nur die ELSEIF informationen der ersten ELSEIF gespeichert. Ich möchte aber dass die Informationen aller 4 ELSEIF's gespeichert werden. Also schlussendlich sollte es so aussehen:
    Code:
    array(3) {
      [0]=>
      array(1) {
        [0]=>
        string(48) "{ELSEIF status == 2}
    Der Status ist 2!!
    {ELSEIF "
      }
      	[1]=>
        string(xx) "{ELSEIF status == 3}
    Der Status ist 3!
    {ELSEIF "
      }
      	[2]=>
        string(xx) "{ELSEIF status == 4}
    Der Status ist 4!!
    {ELSEIF "
      }
      [1]=>
      array(1) {
        [0]=>
        string(11) "status == 2"
        [1]=>
        string(11) "status == 3"
        [2]=>
        string(11) "status == 4"
      }
      [2]=>
      array(1) {
        [0]=>
        string(20) "
    Der Status ist 2!!
    "
    	[1]=>
        string(20) "
    Der Status ist 3!
    "
    	[2]=>
        string(20) "
    Der Status ist 4!!
    "
      }
    }
    Der Code im Regex Überschneidet sich ja ein bisschen, könnte dass der Fehler sein? Woran könnte es sonst liegen?

    Mfg, Andy
    Bücher für Programmierer

  • #2
    Hab eine Lösung gefunden, kann geschlossen werden.

    Das problem war, wie ich dachte eine Überschneidung! Ich habs dann folgendermassen bei mir im Code gemacht:
    PHP-Code:
    preg_match_all('!\{ELSEIF (.*)\}(.*)!isU'$c_zwischen$arr1);
                    
    preg_match_all('!\{ELSEIF '.$arr1[1][$ii].'\}(.*)'.$stop.'!isU'$c_zwischen$arr2); 
    Bücher für Programmierer

    Kommentar

    Lädt...
    X