Ich arbeite an einen Syntax Highlighter, dieser soll alle möglichen Programmiersprachen highlighten, dennoch arbeite ich gerade nur an einer C++ Version. Andere Programmiersprachen möchte ich später hinzufügen. Aber ich möchte hier nicht um den heißen Brei herum reden, sondern euch schildern, wo es hackt.
Und zwar möchte ich diesen C++ Code "matchen":
mithilfe diesen Codes
Dies klappt auch wunderbar aber auch nur solange ich das Escape Zeichen (\n, dick hervorgehoben im Code) wegnehme, lass ich es an der Stelle schneidet, der dass einfach ab.
Ausgabe: Ohne \n im C++ - Code
Ausgabe: Mit \n im C++ - Code
Frage: Kann ich das irgendwie umgehen bzw. gibt es da irgendein Work-around oder hab ich ein Fehler im regulären Ausdruck?
Vielen Dank für euer Hilfe
Und zwar möchte ich diesen C++ Code "matchen":
Code:
#include <iostream> #include <string> #include "foobar.h" #define PRINT_CHEESE printf( \ "I like %d types of cheese\n", \ 5 \ )
PHP-Code:
$code = htmlspecialchars(trim($code));
preg_match_all("/#(?:\\\\\\\\|\\\\\r\n|.)*$/m", $code, $matches);
print_r($matches);
Ausgabe: Ohne \n im C++ - Code
Code:
Array ( [0] => Array ( [0] => #include <iostream> [1] => #include <string> [2] => #include "foobar.h" [3] => #define PRINT_CHEESE printf( \ "I like %d types of cheese", \ 5 \ ) ) )
Code:
Array ( [0] => Array ( [0] => #include <iostream> [1] => #include <string> [2] => #include "foobar.h" [3] => #define PRINT_CHEESE printf( \ "I like %d types of cheese ) )
Vielen Dank für euer Hilfe
Kommentar