Wraz z moim znajomym piszemy skrypt odpowiedzialny za kolorowanie skladni w artykulach i forum w naszym serwisie. Jak dotad wszystko nam szlo jak po masle, ale natknelismy sie na pewien problem, z ktorym od pewnego juz czasu nie mozemy
dac sobie sami rady.
Problem polega na tym, ze jak kolorujemy slowa kluczowe (dla przykladu niech to bedzie int z C) to slowa te nam sie koloruja, ale niestety rowniez wtedy, jesli
slowo to jest lancuchem znakow. Mamy powiedzmy taki oto prosty kod napisany w C:
Kod
#include <stdio.h>
int main()
{
printf("Hello int World \n");
return 0;
}
int main()
{
printf("Hello int World \n");
return 0;
}
i teraz powiedzmy, ze chcemy pokolorowac wszystkie int na niebiesko, wiec:
<?php ?>
I teraz pytanie. Jak powinno wygladac wyrazenie regularne, aby nie kolorowalo tekstu w cudzyslowach?
Probowalem tak:
<?php $zrodlo = preg_replace('/([^\"]*?)bintb(.*[^\"])/', '1<span style=\"color:blue\">int</span>2', $zrodlo ); ?>
Niestety tez nie dziala. Juz nie mam pomyslu jak mozna sobie z tym poradzic.
Bede wdzieczny za wszelkie informacje.