Add to Google Reader or Homepage Prihlásiť sa k odberu RSS

| Rubrika Php / mysql

Diskusia k článku

Zvýrazňovanie syntaxe kódu – GeSHiZobraziť článok

Žiadne komentáre.

Naspäť naspäť

Pridať komentár

Koľko je na ruke prstov?

Náhľad článku

Zvýrazňovanie syntaxe kódu – GeSHi

Zvýrazniť syntax nejakého zdrojového kódu zobrazovaného priamo na stránke sa dá veľmi jednoducho, prostredníctvom natívnej PHP funkcie highlight_strin­g() , avšak táto je čo sa nastavovania týka pomerne obmedzená. Nedá sa nastaviť farebnosť zvýrazňovania, je problém s inými jazykmi ako PHP a hlavne funkcia higlight_string() pri zvýrazňovaní pracuje s XHTML nevalídnymi elementmi ako napríklad font.
Preto je dobré vedieť o niečom čo je na trochu vyššej úrovni ako je štandardná highlight_string.

GeSHi – Generic Syntax Highlighter

GeSHi je opensource PHP trieda distribuovaná pod licenciou GNU, čiže je zdarma použiteľná so zachovaním informácie o autorstve a ľubovoľne modifikovateľná. GeSHi je v prvom rade syntax zvýrazňovač pre PHP, ale dokáže „obslúžiť“ veľké množstvo ďalších jazykov (dokopy ich je 72, kompletný zoznam je na domovskej stránke http://qbnz.com/…er/index.php). Jej hlavná výhoda spočíva v používani CSS tried na farebné zvýrazňovanie syntaxe, z čoho pramení jednoduchá prispôsobiteľnosť (stačí upraviť konkrétne CSS triedy) a zároveň sa minimalizuje objem kódu. Okrem samotného zvýrazňovania GeSHi taktiež dokáže číslovať riadky kódu.

Nároky na systém – rýchlosť?

Napriek tomu, že GeSHi musí pri svojej práci parsovať veľké množstvo kódu, je nečakane rýchly. Pri bežných krátkych kúskoch kódu, je čas rozparsovania kódu nepostrehnuteľný. Približne 150 riadkový kód GeSHi zvládne za cca 0,1 – 0,2 sekundy, 2400 riadkový súbor trval presne 10,881 sekúnd.
Naprek relatívnej rýchlsti neodporúčam GeSHi používať na on-the-fly highlightovanie kódu pre každého návšetvníka stránky zvlášť, ale uložiť prostredníctvom GeSHi vysvietený kód priamo do databázy a potom ho z nej už len vyťahovať.

Použitie

Samotné použitie triedy v praxi je veľmi jednoduché, i keď možností nastavenia je viac než dosť. Uvádzam to najjednoduchšie demo, priamo z domovských stránok GeSHi.

<?
include dirname(__FILE__) . '/geshi.php';
$source = 'echo "hello, world!"';
 
$language = 'php';
$path = 'geshi/';
 
$geshi = new GeSHi($source, $language, $path);
 
echo $geshi->parse_code();
?>

Existuje možnosť integrovať GeSHi napríklad aj do formátovacieho systému Texy!. O tom však niekedy nabudúce.

Demo

Kto by túžil vidieť použitie GeSHi v praxi, nech sa poobzerá po tomto blogu. Všetky zvýraznené kódy sú zvýrazňované prostredníctvom tejto triedy. Široké možnosti vyskúšania triedy sú aj na domovských stránkach, konkrétne priamo tu: http://qbnz.com/…ter/demo.php, kde si môžete vyskúšať zvýrazňovanie akéhokoľvek kódu s použitím rôznych nastavení.

RSS