[PHP] Interpretation von eigenem Code im Template.

  • So, ich wollte mal um in PHP nicht einzurosten eine kleine Template-Engine schreiben.
    Nun habe ich jedoch folgendes Problem.
    Die Syntax sieht folgendermaßen aus.

    Im Template eingebaut erhalten wir folgendes.

    Nun stelle ich mir jedoch die Frage, wie ich das interpretieren soll.
    Bisher bin ich soweit, dass ich die Codes z.B. wie folgt habe.

    Es dreht sich also nur darum [2] entsprechend auszuwerten.
    Bei solch einem einfachen Code ist das kein Problem, aber gehen wir einmal davon aus wir hätten folgendes.

    Zitat

    (Ausdruck AND Ausdruck2) OR (Ausdruck3 AND Ausdruck4)

    Wie macht es eurer Meinung nach am meisten Sinn das auszuwerten ??
    Ich meine jetzt, wie würdet ihr vorgehen?
    Zuerst alle Ausdrücke raussuchen und überprüfen und dann erst die Reihe abtasten?
    Das ganze Ausdruck für Ausdruck durchkämmen?
    ... ?

    Noch kurz zur Info: Ausdruck soll ein einfache Schlüssel sein, wenn er in einem Array existiert ist es true, sonst false.

  • ich denk mal du machst dir jetzt en array wie z.B. der hier:

    PHP
    <?php
    $test = array("blub","","blub2","blub3","blub4","blub5");
    ?>

    [0] Test
    [1] Test2
    [2] Test3
    [3] Test4
    [4] Gaga
    [5] Gugu

    und dann wendest du IF Abfragen auf den Array an?!
    (vll hab ich auch das ganze einfach nicht gerafft aber ich hätts jetzt so gemacht)

    Gruß crAzywuLf :D

  • Zitat von DarkSyranus

    Ja, crAzywuLf, du hast mich verstanden =)
    Soweit bin ich auch schon, aber wie interpretiere ich die Anfragen?
    Ich hab bisher noch keine logische Idee, wie ich mit Klammern verschachtelte Abfragen lösen kann und eval() wollte ich eigentlich nicht benutzen ...

    komm mann, stell dich doch ned so dumm^^
    du du hast den aufbau doch oben schon gut aufgeschrieben jetzt nur noch in php ^^
    das wirste wohl schaffen ;)
    ich kann dir die lösung ja auch ned einfach jetzt hier hinschreiben ne?^^

  • Doch, ich steh grad irgendwie auf'm Schlauch =)
    Ich such mir alle Abfragen da raus über preg_match_all() oder so und dann lass ich sie prüfen, ob sie in dem Array existieren.
    Das ist ja auch kein Problem, kleine Abfrage machen und wenn irgendwie false vorkommt ist die Bedingung falsch.
    Aber nun kommt mir diese Klammernstellung dazwischen.

    Ich muss ja irgendwie berücksichtigen, dass wenn man z.B. (Ausdurck1 OR Ausdruck2) hat, dass dann nur eines von beiden true sein muss.
    Und dass ist ja nur eine einfache Verschachtelung, es gibt ja auch Sachen wie (Ausdruck1 AND ((Ausdruck2 OR (Ausdruck3 AND Ausdruck4)) AND Ausdruck5)).
    Mir fällt kein logisches Muster ein, wie man die interpretiert, die Umsetzung nachher ist kein Problem ...

  • Hm, ich glaube ich brauch erstmal das hier ...
    Also, ich versuche es nochmal zu erklären.

    Ich bin im Moment auf der Suche nach einer möglichst optimalen Möglichkeit eine möglichst hoch verschachtelte Bedingung nach einem gewissen Muster möglichst immer gleich interpretieren zu können, und das egal wie krank das ganze verschachtelt ist.

    Edit:
    Juhu, es geht jetzt.
    Braucht ein wenig mehr Rechenleistung, aber das ist mir so ziemlich egal =)
    Wen es interessiert: