php:syntax auslesen und ausgeben



  • hi,
    ich habe eine Variable $CODE darin ist ein quellcode,
    wie kann ich z.b "#include" und die ander C++ Schlüssel-
    wörter wo im Code vorhanden sind als html ausgeben ??
    Ich wollt halt so machen das man einen Code eingeben kann und sich die schlüssel wörter einfärben!

    kann mir einer helfen??

    Danke!



  • Wenn ich dich richtig verstanden habe, möchtest du, dass C++-Schlüsselwörter wie int, char, static usw.... anders eingefärbt werden. Ich würde die ganzen Schlüsselwörter, die du einfärben möchtest in 'nem mehrdimensionalen Array speichern. Dann gibst du halt den Schlüsselwörtern 'ne bestimmte Farbe (im Array) z.B $keywords = array("S1" => array("int", "black"),
    "S2" => array("char", "black")
    ..... usw....
    );

    Dann überprüfst du nachher in 'ner foreach-Schleife mithilfe von Stringfunktionen ob eines der Wörter deines Arrays vorkommen, merkst dir die Stellen (dafür gibts schöne Stringfunktionen) und färbst die Wörter dann halt entsprechend ein.
    MfG

    Tobsen



  • Die Schwierigkeit liegt mehr darin, dass nicht überall die Zeichenfolge "int" eingefärbt werden sollte (z.B. in Variablennamen oder Kommentaren)
    Du brauchst also einen regulären Ausdruck und preg_replace o.ä.



  • was ist preg_replace ?? kenn ich noch ned!



  • Tobsen:
    ja genau das mit dem array ist ne gute idee.

    ich habe den code text mit einen Eregi ausgelesen. if(eregi("<code>(.*)</code>",$text, $code))

    der code steht ja auch in einen Array wie kann ich jetzt die Variable
    änder das ich es einfärben kann?



  • www.php.net/preg_replace bei einem einfachen str_replace kannst du eben den Sinn von "int" (Typenbezeichner, in einem Variablennamen oder Kommentar, etc.) nicht mit Berücksichtigen.
    Es gibt auch ein ereg(i)_replace, aber die preg_* Funktionen sind afaik schneller als die ereg_* Funktionen

    Aber den richtigen regulären Ausdrück zu ertüfteln ist ne schwierige Sache - Dimah wird dir ein Lied davon singen können 😃
    [edit]Hab gerade im Mod-Forum gelesen, dass cd9000 den Syntax-Highlighting Mod geschrieben hat, nicht Dimah[/edit]



  • Das is aber etwas komplizierter oder ??



  • Ich denke schon 🙄 - einen Ausdruck zu finden, der nicht zu viel, aber auch nicht zu wenig einfärbt ist nicht einfach 😉



  • flenders schrieb:

    Ich denke schon 🙄 - einen Ausdruck zu finden, der nicht zu viel, aber auch nicht zu wenig einfärbt ist nicht einfach 😉

    es ist eigentlich einfach aber man muss wissen wie :)..
    hab sowas auch schon geschrieben sind nur so äh ca 40 zeilen Tokenizer ohne keywords und regex .. mit keywords und regex so ca ... 100 zeilen ..


Anmelden zum Antworten