PHP - { } nach Ebenen nummerieren

  • Hallo,


    der Titel ist vermutlich nicht der beste, aber was anderes fiel mir nicht ein! :D

    Folgendes Problem:

    Bin grad am basteln meines Newssystems und möchte, dass PHP Code den ich dort schreibe, möglichst automatisch farblich hinterlegt wird und auch eingerückt wird, da ich das nicht ständig per Hand machen will.

    Nun habe ich dort zum Beispiel den Code:

    Und ich möchte, dass die Klammern nach Ebenen sortiert nummeriert werden, so dass ich die per CSS einrücken kann.
    Ich hätte es also gerne so am Ende:

    Wenn ihr versteht was ich meine? [e1][/e1] (e1 = Ebene 1, e2 = Ebene 2...) ist dann dementsprechend die Einrückung die ich per RegEx durch HTML/CSS Befehle ersetzte und dadurch einrücke.

    Mein Problem ist aber, die nach ihren Ebenen zu nummerieren, irgenwie fehlt mir da die Idee.
    Habs mit Regular Expressions versucht und mit diversen Schleifen möglichkeiten, komme aber nicht ganz weiter.
    Vielleicht hat ja jemand ne zündende Idee.
    Hoffe mein Problem ist irgendwie verständlich dargelegt. =)

    Gruß,
    Phil

    wert.TeeeX.de
    Wie gut ist die technische Umsetztung deiner Website wirklich?
    Teste es!

  • Danke, hab ich mir angeguckt, ist aber nicht genau das, was ich suche, denk ich.
    Ich dachte ehr, irgendwer könnte eine simple Lösung parat haben oder irgendeine Idee.

    Habs schon richtung RegEx probiert wie gesagt, aber irgendwie sind zuviele Variablen vorhanden, die beachtet werden müssen.
    Brauche aber ne Lösung.. -.-'
    =)

    wert.TeeeX.de
    Wie gut ist die technische Umsetztung deiner Website wirklich?
    Teste es!

  • Hmm.. ist auch nicht das was ich suchen, bin den Code durchgegagen.
    Was meinst du denn da, was mir helfen soll? Hab nichts so richtig gefunden. Aber danke... =)

    wert.TeeeX.de
    Wie gut ist die technische Umsetztung deiner Website wirklich?
    Teste es!

  • nunja, da es dir ja um die Anzeige von Quellcode geht, hab ichs halt eher in die richtung versucht, dir sachen zu posten dies halt schon gibt.
    Deine Ebenennummerierung willst du ja auch nur machen ,um das dann per css zu formatieren, oder verstehe ich dich da falsch?

    Ein Script was das so macht, wirst du wohl eher nicht finden.
    Eine Idee ist halt die hier:

    1. Alle öffnenden Klammern suchen, welche von einem Zeilenumbruch gefolgt werden.

    2. Diese Klammern im String in einer foreach ersetzen un mit der css-klasse versehen. Oder gleich durch den Tab.

    3. Dasselbe mit den schliessenden Klammern machen


  • nunja, da es dir ja um die Anzeige von Quellcode geht, hab ichs halt eher in die richtung versucht, dir sachen zu posten dies halt schon gibt.
    Deine Ebenennummerierung willst du ja auch nur machen ,um das dann per css zu formatieren, oder verstehe ich dich da falsch?

    Ein Script was das so macht, wirst du wohl eher nicht finden.
    Eine Idee ist halt die hier:

    1. Alle öffnenden Klammern suchen, welche von einem Zeilenumbruch gefolgt werden.

    2. Diese Klammern im String in einer foreach ersetzen un mit der css-klasse versehen. Oder gleich durch den Tab.

    3. Dasselbe mit den schliessenden Klammern machen


    Du bist der Größte. =)
    Ich hab die ganze Zeit nämlich versucht die Ebenen zu nummerieren und dann daraus die Stylesheets abzuleiten für den passenden Abstand. -.-'
    Aber du deinen Post hast du mich grad auf den richtigen Weg gelenkt, bzw. mich auf eine Idee gebracht..
    Manchmal sieht man den Wald vor lauter Bäumen nicht...
    Wenn sich Probleme auf die Art & Weise lösen ist das eigentlich immer ziemlich ätzend.. xD

    Gruß

    wert.TeeeX.de
    Wie gut ist die technische Umsetztung deiner Website wirklich?
    Teste es!

  • Zählen würde aber auch gehen...

    Wenn du den code eh für die Farbhervohebung parsen musst.
    Einfach für jede aufgehende klammer den counter++ machen und bei } counter--. Dann weist du auch in welcher Ebene du dich befindest oder nicht?

    Einmal editiert, zuletzt von Grevas (31. Juli 2010 um 19:59)

  • schon, aber dann kommt mal n } in nem string und dann wars da wieder. Du kannst es aber auch so machen wie Grevas, jedes einzelne Zeichen durchgehen und Strings überspringen.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • N Counter bringt mir nicht viel.

    Durchgezählt komme ich wieder auf Null und kann dann zwar sagen, dass ich mit dem und dem Befehl auf Position nr. 78 in Ebene 3 bin, aber das bringt mir ja nicht viel.

    Das Funktioniert bei einfachen Abfolgen wie

    {
    {

    }
    }

    aber bei komplexeren Sachen die nicht symetrisch sind bringt mir das nicht viel.
    Abgesehn davon, konnte ich das Problem ja anderweitig lösen, dadurch dass es ja eigentlich garnicht unbedingt nötig ist die zu nummerieren, aber manchmal ist man etwas zu fokusiert auf die Grundidee das man andere Wege garnicht sieht... =)

    wert.TeeeX.de
    Wie gut ist die technische Umsetztung deiner Website wirklich?
    Teste es!

  • Zitat von -Bambino-


    aber bei komplexeren Sachen die nicht symetrisch sind


    An was denkst du da?

    PHP
    if ("BOOL") tu_das(); else { tu_das("andere"); }


    Durchgehen und auf jedes { / } reagieren, das nicht gerade in nem String ist scheint mir Idiotensicher.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Sowas würde ich als komplexer ansehen.

    Und wie stellst du dir vor, die so Ebenen-mäßig zu nummerieren, wie ichs am Anfang erklärt habe? ^^
    Einfach ohne Nummerierung durch gehen ist klar, aber mit?
    Ich bin mir grad nicht ganz sicher, worauf du hinaus willst... =)

    Das Ergebnis ist übrigends hier zu sehen:
    TeeeX.de

    wert.TeeeX.de
    Wie gut ist die technische Umsetztung deiner Website wirklich?
    Teste es!

    Einmal editiert, zuletzt von -Bambino- (31. Juli 2010 um 22:44)

  • Was am ende bei rauskommt ist mit sicherheit ein algorhytmus, ders n bills in sich hat. aber des is nötig.

    habs nicht gesetet, der Alg. müsste aber so ähnlich aussehen.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • So, jetzt hab ich das tatsächlich ma gebastelt wie ichs gemeint hab.
    Hier ein gesamtes Script der die automatische Einrückung übernimmt:

    Ob du den Tab benutzt, oder sonst iwas, ist dir ja überlassen ;P

    //P.S. das ganze so zu erweitern, dass die Tabs die schon da sind ignoriert / berücksichtigt werden, überlass ich dir.
    //PP.S. wobei der Tab blöd ist, wenn jemand den Stil benutzt den ich auch verwende :rolleyes: , ist halt ne basic einrück funktion, noch erweiterungbedürftig ;) aber du weist wie ichs gemeint hab.

    6 Mal editiert, zuletzt von Grevas (31. Juli 2010 um 23:51)

  • So, jetzt hab ich das tatsächlich ma gebastelt wie ichs gemeint hab.
    Hier ein gesamtes Script der die automatische Einrückung übernimmt:

    Ob du den Tab benutzt, oder sonst iwas, ist dir ja überlassen ;P

    //P.S. das ganze so zu erweitern, dass die Tabs die schon da sind ignoriert / berücksichtigt werden, überlass ich dir.
    //PP.S. wobei der Tab blöd ist, wenn jemand den Stil benutzt den ich auch verwende :rolleyes: , ist halt ne basic einrück funktion, noch erweiterungbedürftig ;) aber du weist wie ichs gemeint hab.

    Die Variante gefällt mir gut, auf die Idee bin ich am Anfang nicht gekommen.
    So hätte ich das auch lösen können, wenn Jojo mich vorhin nicht schon auf die richtige Idee gebracht hätte.. =)
    Dankeschön. =)

    wert.TeeeX.de
    Wie gut ist die technische Umsetztung deiner Website wirklich?
    Teste es!