| Rubrika Php / mysql
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_string()
, 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í.
Tomáš Mašek
naspäť
prispieť do diskusie [0]
Vyhľadávanie
Viac z rubriky
Ako ochrániť includované PHP súbory?
Automatické generovanie formulárov z MySQL
Automatický prevod texu na hyperlink
Cachovanie do HTML súboru
Cachovanie s pomocou funkcií serialize/unserialize
Čiernobiele obrázky v PHP
Dynamická tvorba URL
Fulltext ako názov stĺpca v tabuľke
Getcwd – Ako ľahko získať absolútnu cestu
Import z Excelu do MySQL databázy
Maximálny timeout vykonávania SQL skriptu
Microtime – rýchlosť načítania stránky
Odstránenie diakritiky v PHP pomocou iconv()
Overovanie a kontrola formulárov v PHP
Parsovanie XML súboru v PHP
PHP a zachytenie nedoručených mailov
PHP funkcia implode
Porovnávanie a dátovy typ DATE
Práca so súbormi pri zapnutom safe_mode
Prihlasovanie uživateľa prostredníctvom $_SESSION
Real-time kontrola e-mailovej adresy AJAX-om
Spracovanie dátového typu ENUM do HTML selectu
Strpos a offset – nájdenie výskytu znaku v reťazci
Tip: Generovanie PDF súborov
Tip: jednoduché šifrovanie a dešifrovanie v PHP
Tip: správne includovanie súborov
Ukladanie jazykových verzií statických textov
Veľmi jednoduchý návod na pekné URI
Vkladanie obrázkov do databázy
Výber záznamov začínajúcich číslom
Vyčistenie viacrozmerného poľa
Vyhľadávanie, pekné URI a diakritika
Vypísanie abecedy v PHP
Využívanie unikátnych kľúčov v MySQL databáze
Zaradenie jednej položky do viacerých kategórií
Zistenie hodnoty ďalšieho ID – autoincrement
Zložené MySQL dotazy – LEFT JOIN
Pridať komentár



