Paste vor Ort, Syntax-Hervorhebung
-
08-07-2019 - |
Frage
Ich erhalte einen Web-Host, und ich habe Projekte mit teammats. Ich dachte, es eine gute Idee sein, meine eigene Paste Website, die kein Verfallsdatum auf Paste (ich weiß http: // pastie. org / vorhanden sind) und andere Dinge. ich wollte wissen. Was ist ein einfaches Highlight lib i auf Code verwenden können? ich würde nur unter Verwendung von C / C ++.
Lösung
Die Frage markiert ist "php", aber sie "wäre nur C / C ++"?
Eine PHP-Lösung ist GeSHi .
Andere Tipps
Eine Textmarker für nur eine Sprache (kontextfrei, mit regelmäßigen Lexemen wie C ++) ist eigentlich ziemlich einfach, weil Sie im Grunde all Lexeme in einen großen regulären Ausdruck wickeln können:
$cpplex = '/
(?<string>"(?:\\\\"|.)*?")|
(?<char>\'(?:\\\\\'|.)*?\')|
(?<comment>\\/\\/.*?\n|\\/\*.*?\*\\/)|
(?<preprocessor>#\w+(?:\\\\\n|[^\\\\])*?\n)| # This one is not perfect!
(?<number>
(?: # Integer followed by optional fractional part.
(?:0(?:
x[0-9a-f]+|[0-7]*)|\d+)
(?:\.\d*)?(?:e[+-]\d+)?)
|(?: # Just the fractional part.
(?:\.\d*)(?:e[+-]\d+)?))|
(?<keyword>asm|auto|break|case…)| # TODO Complete. Include ciso646!
(?<identifier>\\w(?:\\w|\\d)*)
/xs';
$matches = preg_match_all($cpplex, $input, $matches, PREG_OFFSET_CAPTURE);
foreach ($matches as $match) {
// TODO: determine which group was matched.
// Don't forget lexemes that are *not* part of the expression:
// i.e. whitespaces and operators. These are between the matches.
echo "<span class=\"$keyword\">$token</span>";
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow