Pro zvýrazňování PHP kódu existuje celá řada knihoven, které mají různou spolehlivost a jsou různě náročné nainstalovat.
Pokud na zvýrazňování nemáme moc velké nároky, lze použít i přímo vestavěné funkce v PHP.
Nejmenší možný příklad:
highlight_string('<?php phpinfo(); ?>');
Funkce vrátí přímo na výstup zvýrazněný kód pomocí HTML značek (PHP 4):
<code><font color="#000000"><font color="#0000BB"><?php phpinfo</font><font color="#007700">(); </font><font color="#0000BB">?></font></font></code>
V PHP 5 vypadá výstup o něco lépe (používá správě atribut style
):
<code><span style="color: #000000"><span style="color: #0000BB"><?php phpinfo</span><span style="color: #007700">(); </span><span style="color: #0000BB">?></span></span></code>
Kód je automaticky escapovaný, nemusíte se bát ho vypsat do stránky. Neobsahuje zranitelnost XSS.
Proces zvýraznění kódu je velmi komplikovaný, protože nástroj musí rozumět syntaxi jazyka a znát všechna jeho pravidla.
PHP tuto úlohu řeší tak, že kód přijatý jako string nejprve rozparsuje na sérii malých logických celků procesem zvaným tokenizace řetězců (to se dá použít na mnohem víc věcí, třeba na implementaci pokročilé kalkulačky).
Jednotlivé tokeny pak dostanou vlastní barvu a vypíší se ve stejném pořadí, jako byly v původním zdrojovém kódu.
POZOR:
Protože je pro výstup hodnoty interně využíván výstupní buffer, nemůže být funkce použita jako callback bufferovací funkce
ob_start()
.
Parametr | Datový typ | Výchozí hodnota | Poznámka |
---|---|---|---|
$str |
string |
není | PHP kód, který má být zvýrazněn. Měl by zahrnovat úvodní značku <?php . |
$return |
bool |
null | Pokud je true , funkce vrátí zvýrazněný kód. |
Pokud je $return
nastaven na true
, vrací funkce zvýrazněný kód. Pokud je $return
nastaven na false
, vrací funkce true při úspěchu a zvýrazněný kód vypisuje.
Hodnotu false
vrátí v případě selhání.
Jednotlivým PHP tokenům můžeme nastavit vlastní barvy funkcí ini_set()
a to například takto:
ini_set("highlight.comment", "#008000");ini_set("highlight.default", "#000000");ini_set("highlight.html", "#808080");ini_set("highlight.keyword", "#0000BB; font-weight: bold");ini_set("highlight.string", "#DD0000");
[Oficiální dokumentace funkce highlight-string](Oficiální manuál)
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Nabízím trénink vývojářů, konzultace, školení a analýzu návrhových vzorů. Osobně v Praze nebo online.
Napište mi, pokud si nevíte rady.
Lektor: Jan Barášek
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | cs