php:zeichenkette einfärben



  • ich kann mir nicht vorstellen dass dein Syntax-Highlighting vernünftig funktioniert, wenn du nur mit str_replace arbeitest 🙄
    zu preg_replace: damit kannst du mit Hilfe eines regulären Ausdrucks (sag jetzt bitte nicht, dass du nicht weißt, was das ist 😉 ) best. Teile in einem String ersetzen



  • also ich bin etwas noch anfänger aber so blöd wie du mich darstellst bin ich echt ned!!!! mein Mod färbt C++ Syntax Farbin ein! und ich will auch wie anführungszeichen einfärben weis aber ned wie ok?? eine Antwort wäre ganz nett!!



  • wie färbst du denn dein Code ein? Zeig mal deinen bisherigen Code.
    z.B. if(stift) { ... } wird da das if in stift aufch eingefärbt?



  • patterns[0] = "/delete/"; patterns[1] = "/fiend/";
    patterns[2] = "/inline/"; patterns[3] = "/new/";
    patterns[4] = "/namespache/"; patterns[5] = "/operrator/";
    patterns[6] = "/private/"; patterns[7] = "/prodected/";
    patterns[8] = "/public/"; patterns[9] = "/struct/";
    patterns[10] = "/enum/"; patterns[11] = "/template/";
    patterns[12] = "/this/"; patterns[13] = "/throw/";
    patterns[14] = "/try/"; patterns[15] = "/template/";
    patterns[16] = "/int/"; patterns[17] = "/static/";
    patterns[18] = "/const/"; patterns[19] = "/#include/";
    patterns[20] = "/unsigned/"; patterns[21] = "/long/";
    patterns[22] = "/try/"; patterns[23] = "/char/";
    patterns[24] = "/#define/"; patterns[25] = "/#ifdef/";
    $patterns[26] = "/#endif/";

    replacements[0] = "delete"; replacements[1] = "<b>fiend</b>";
    replacements[2] = "inline"; replacements[3] = "<b>new</b>";
    replacements[4] = "namespache"; replacements[5] = "<b>operrator</b>";
    replacements[6] = "private"; replacements[7] = "<b>prodected</b>";
    replacements[8] = "public"; replacements[9] = "<b>struct</b>";
    replacements[10] = "enum"; replacements[11] = "<b>template</b>";
    replacements[12] = "this"; replacements[13] = "<b>throw</b>";
    replacements[14] = "try"; replacements[15] = "<b>template</b>";
    replacements[16] = "int"; replacements[17] = "<font color=\"#2E04FF\">static</font>";
    replacements[18] = "const"; replacements[19] = "<font color=\"#129600\">#include</font>";
    replacements[20] = "unsigned"; replacements[21] = "<font color=\"#2E04FF\">long</font>";
    replacements[22] = "try"; replacements[23] = "<font color=\"#2E04FF\">char</font>";
    replacements[24] = "#define"; replacements[25] = "<font color=\"#129600\">#ifdef</font>";
    $replacements[26] = "<font color=\"#129600\">#endif</font>";

    $text = str_replace("

    ","<br>C++ Code:</b><table border=\"0\"
    			bgcolor=\"#ffffff\" align=\"center\" width=\"99%\"><td><p style=\"color:black;font-family:courier\">",$text);
    
    			$text = str_replace("
    

    ","</p></td></table>",text);text); text = preg_replace($patterns, $replacements, $text);



  • da sies fehler gibts hier auch!



  • So wird das nicht gehen. Dein Algorithmus würde folgenden Code falsch markieren:
    char* Text = "for while do int float";

    Denn Du unterscheidest nicht zwischen "im Code" und "in einem String".
    Gleiches gilt für Kommentare.



  • TomasRiker schrieb:

    So wird das nicht gehen. Dein Algorithmus würde folgenden Code falsch markieren:
    char* Text = "for while do int float";

    Denn Du unterscheidest nicht zwischen "im Code" und "in einem String".
    Gleiches gilt für Kommentare.

    achso und wie ist es dann nach deiner meinung möglich??



  • Mit Regulären Ausdrücken 😉 -> preg_replace



  • ok schau ich mir mal an damit gets oder wie?? obwohl ich auf dem Ersten blick kein unterschied erkenn!



  • Wenn du weiter nach unten kommst wirst du bald den unterschied feststellen 😉


Anmelden zum Antworten