Array parser

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

  • Array parser

    Hi

    Ich schreibe gerade an einer parser Klasse.
    Dabei bin ich beim parsaen von mehrdimensionalen Arrays auf ein
    Problem gestoßen.
    Wie sollte ich es ermöglichen im Template vorkommende Begriffe wie z.Bsp:

    {$array["ErsteDImens"]["zweiteDimens"]["dritteDiomens"]....}
    umzusetzen und durch den wert des Arrays zu ersetzten.

    Also z.Bsp: dann eben den Wert von

    $array["ErsteDImens"]["zweiteDimens"]["dritteDiomens"]....; ?

    Ich habe hier mal etwas geschrieben.
    Es funktioniert leider nur teilweise ( mit einDimensionalen funktioniert es, wenn man die ") weglässt!

    PHP-Code:
         preg_match_all("/{[$]"$needle ."(\[.*?\])}/im"$this->strTemplate$match1);
         
          
    $arrayDim $match1[1][0];
                
          
    $array $replacement[$arrayDim];
          
          eval(
    "\$array = \"$array\";");

           
           
    $this->strTemplate str_replace("{\$"$needle ."["$match1[1][0] ."]}"$array$this->strTemplate); 

    Ich hoffe jemand kann mir weiterhelfen!

    Gruß SimonErich

  • #2
    Hi,

    kurze Frage: Mit welchem Hintergedanken möchtest Du das denn so machen?
    Also Arrays in einem Templatesystem machen in meinen Augen nur Sinn für Loops. Oder wie siehst Du das?

    greatz
    rl

    Kommentar


    • #3
      Ich schreibe gerade an einem Forum und naja da dachte ich mir große Forensysteme machen dies.

      Dieses parsen wird ja auch in einer foreach Schleife verwendet !
      Aber ich glaube ansonsten sind Arrays auch sehr fein.
      Bis jetzt hab ich viele Seiten in smarty geschrieben.
      Dort hab ich oft Arrays verwendet und auch nicht immer in Loops.
      Nun möchte ich mich aber von smarty lösen und selbst etwas schreiben-.


      Gruß SimonErich

      Kommentar


      • #4
        Ich hab das Script nun ein bisschen umgeschrieben sodass ich die DImensionen nun jeweils in einem Array Element befinden.

        Also

        Array
        (
        [name]=>$arr
        [dimensions]=>array(
        [0]=>"Dimension1"
        [1]=>"Dimension2"
        ......
        Aber wie mache ich nun daraus eben wieder ein Array das dieser gesamten Dimensionstiefe entspricht ?
        foreach ?

        Kommentar

        Lädt...
        X