Brugerdefineret Syntax highlighting

Tags:    php

Hej

Jeg sidder og hygger mig med en hjemmeside der skal kunne vise noget kode en bruger har skrevet, og kunne godt tænke mig at få visse ord markeret.
F.eks for if while markeret med fed, true false mørkerød og funktionsnavnene blå.

Spørgsmålet er så om der findes et eller andet i PHP som kan gøre det?


Tak

> Forresten er sproget ikke PHP!



Indlæg senest redigeret d. 07.04.2008 15:00 af Bruger #10608
10 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Ja, de fleste programmeringssprog skulle kunne klare det!
Javascript, PHP You name it, they got it.. :P
Du skal bare replace en speciel tekst (fx. "if") Og erstatte den med fx <span style="color: #465738">if</span>



hvis det er php kode kan du prøve at bruge "highlight_string"
functionen.

http://us.php.net/highlight-string






Hej Nørden,

Havde skam ikke tænkt mig kun at benytte CSS, JavaScript også. Med mindre jeg ønskede det lagret på serveren, så vil noget ASP eller PHP sikkert få siden til at køre hurtigre.

Fold kodeboks ind/udKode 


Med venlig hilsen
Ieet

Ps. Det er sådan den kode min farver laver ser ud.
Pps. Niels: Ja. Men det er mest en smags-sag fremfor spans. Jeg er ved at forandre min color coder til code-tags fremfor span classes.



Indlæg senest redigeret d. 07.04.2008 16:39 af Bruger #12836
http://qbnz.com/highlighter/

http://code.google.com/p/syntaxhighlighter/

http://www.devpro.it/jshighlighter/

http://www.google.dk/search?hl=da&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=syntax+highlight&spell=1

Så nemt er det. At lave den slags kræver en del erfaring i regular expressions og hvis man stiller spørgsmålet om hvordan man laver den slags er det vist kun en indikator om at man ikke besidder den fornødne erfaring. :) Mindst en af de ovenstående highlighters burde kunne tilpasses til en anden syntaks end til dem der er mest brugt.



Indlæg senest redigeret d. 07.04.2008 17:58 af Bruger #10216
"Du skal bare replace en speciel tekst ..."
Ja den har jeg også tænkt på. Det er nok det jeg ender med at gøre, men jeg tænkte at der muligvis fandtes en mere effektiv og elegant løsning. Sådan noget i stil med highlight_string som jeg kender i forvejen, men hvor man tilføjer alle tagsne til et eller andet array eller lignende som så... ja.. gør det samme bare hurtigere.

EDIT

Forresten ville str_replace give lidt problemer med f.eks stifinder() stiff() og fif().

For slet ikke at tale om den indbyggede variabel 'y' som også skal farves. Behøver jeg at give et eksempel?



Indlæg senest redigeret d. 07.04.2008 16:05 af Bruger #10608


Hej Niels,

Du kan generere et CSS ark der svarer til keywords, og udskifte med <if>if</if>. Variabelnavne kræver en længre parsing.

Med venlig hilsen
Ieet





Du kan jo også bare lave din egen læser, kan laves med en masse nestet while løkker.

PS ville gerne vide hvordan du har tænkt der at syntax farve med CSS kun.



Indlæg senest redigeret d. 07.04.2008 16:31 af Bruger #5620
Ieet:
Det lyder jo vældig interessant!

Jeg er ikke så erfaren i regulære udtryk (for jeg regner med at dette ville kræve dem til at isolere if'et).

Men lad os bare sige at jeg har fundet ud af at lave et regulært udtryk der tester om der er ikke-alfanumeriske tegn uden om 'if'. 'Må man så godt' lave sine egne tags når det ikke er xml? Eller var det ikke det du mente?

Nørden:
Med brug af min ikke-alfanumeriske tegn uden om" teori?
Tja det er måske det jeg ender med men vil lige høre lidt mere om den CSS idé.



Indlæg senest redigeret d. 07.04.2008 16:41 af Bruger #10608
Gnu:
Nu var spørgsmålet oprindeligt om der fandtes noget indbygget i PHP som var beregnet til det, men eftersom det ikke syntes at være tilfældet må jeg ty til at bruge andre folks kode. Æv.
Men jeg siger tak.



Gnu:
Nu var spørgsmålet oprindeligt om der fandtes noget indbygget i PHP som var beregnet til det, men eftersom det ikke syntes at være tilfældet må jeg ty til at bruge andre folks kode. Æv.
Men jeg siger tak.


Det var ikke så'n du formulerede dig:
Spørgsmålet er så om der findes et eller andet i PHP som kan gøre det?


Jeg svarede med et par projekter der er skrevet i PHP som kan gøre det du efterspørger.

Men nok om ordkløveri. :)

- God fornøjelse



Indlæg senest redigeret d. 08.04.2008 16:25 af Bruger #10216
t