ShikiPHP
Čisti označevalnik sintakse PHP, prenos orodja Shiki. Bloke kode oblikujte s temami VS Code in slovnicami TextMate brez Node.js; izhod se ujema z Shiki 3.23.0 v primerjalnih scenarijih 214.
composer require shikiphp/shikiphpNajnovejša izdaja v0.1.0 MIT PHP 8.2+, ext-json, ext-mbstring
use Shikiphp\Shikiphp;
echo Shikiphp::codeToHtml("\e[31merror\e[0m: something broke", [
'lang' => 'ansi',
'theme' => 'github-dark',
]);V praksi
Označite izsek iz predloge ali skripta za gradnjo PHP in izpišite rezultat HTML.
En klic za vsak blok kode
Shikiphp::codeToHtml sprejme kodo, ID jezika in ID teme. Vrne celoten blok pre z barvami, zapisanimi v vrstici, zato se prikaže brez dodatne slogovne predloge.
Namesto theme podajte preslikavo themes in isti blok bo prek spremenljivk CSS vseboval barve za svetli in temni način.
use Shikiphp\Shikiphp;
echo Shikiphp::codeToHtml(<<<'PHP'
<?php
function greet(string $name): string {
return "Hello, {$name}!";
}
PHP, [
'lang' => 'php',
'theme' => 'github-dark',
]);use Shikiphp\Shikiphp;
$code = 'const answer: number = 42';
echo Shikiphp::codeToHtml($code, [
'lang' => 'ts',
'themes' => ['light' => 'github-light', 'dark' => 'github-dark'],
]);Prave slovnice TextMate
Zvest prenos orodja vscode-textmate: vdelani jeziki, injekcije in ugnezdena skladišča. Enake slovnice uporabljata Shiki in VS Code za tokenizacijo.
Teme VS Code
Specifičnost izbirnikov obsega in ujemanje nadrejenih obsegov, prenesena iz vscode-textmate. Ena tema ali svetli in temni način prek spremenljivk CSS.
Izhod, enak kot pri Shiki
V primerjalnih scenarijih 214 se izhod z JavaScript mehanizmom regularnih izrazov ujema z izhodom HTML orodja Shiki 3.23.0 za 167 od 253 priloženih slovnic, ANSI in vseh 65 tem, razen začetnih in končnih presledkov.
Mehanizem regularnih izrazov samo v PHP
Vključen mehanizem RegExp za JavaScript iz inline0/phasis, ki ga poganja prenos orodja oniguruma-to-es. Mehanizem regularnih izrazov JavaScript orodja Shiki uporablja enako pot od Oniguruma do RegExp.
Transformatorji
Vsak priklop Shiki (preprocess, tokens, root, pre, code, line, span, postprocess) ter vgrajeni pretvorniki za notacijo, metapodatke in presledke.
Celoten paket
V paketu so vsi jeziki tm-grammars (235 in še 18 pomožnih slovnic) ter vse teme tm-themes (65). Vključeni so tudi izhod za terminal ANSI, okraski in colorReplacements.
CLI
Označite datoteko s HTML ali pa neposredno v ukazni vrstici z bin/shikiphp izpišite priložene jezike in teme.
Brez Node.js
Deluje na PHP 8.2+ samo z razširitvama ext-json in ext-mbstring. Brez izvajalnega okolja Node.js, izvorne vezave Oniguruma ali klicanja lupine.
Zakaj ShikiPHP
Deluje tam, kjer deluje vaš PHP
Označevanje poteka v procesu PHP, brez klicanja Node.js prek lupine ali gostovanega API. Primerno je za korak gradnje v Laravel, WordPress ali za statično spletno mesto.
Izhod, primeren za predpomnjenje
Ista koda z enakimi možnostmi vedno ustvari enak HTML. Kodo označite med gradnjo ali pa predpomnite HTML glede na kodo in možnosti, dokler se vir ne spremeni.
En blok za svetli in temni način
Preslikava tem zapiše barve druge teme kot spremenljivke CSS v isto označevanje, nekaj vrstic CSS pa preklopi nanjo. Možnost defaultColor določa, katera tema se zapiše v vrstico.
Omejitve za nezaupanja vreden vnos
Mehanizem regularnih izrazov si zapomni neuspešne poskuse in ščiti pred ReDoS, zato se patološki vzorec upočasni, namesto da bi obstal. Možnost tokenizeMaxLineLength predolge vrstice odda kot en navaden žeton.
V primerjavi z
Drugi načini označevanja kode za spletno mesto PHP in razlike orodja ShikiPHP.
| Orodje | Primerno za | Razlika v primerjavi z ShikiPHP |
|---|---|---|
| Shiki | Primerno zaReferenčna izvedba v JavaScript. Deluje v katerem koli sodobnem izvajalnem okolju JavaScript brez API-jev Node.js, slovnice in teme nalaga po potrebi ter ima integracije Twoslash TypeScript. | Razlika v primerjavi z ShikiPHPShikiPHP prenese ta cevovod v PHP za strani, upodobljene na strežniku PHP. Njegov primerjalni okvir primerja HTML z Shiki 3.23.0, medtem ko je glavna veja orodja Shiki prešla na v4. |
| Phiki | Primerno zaOznačevalnik kode PHP, ki uporablja tudi slovnice TextMate in teme VS Code. Vključuje razširitev league/commonmark, ki deluje z metodo Str::markdown orodja Laravel, izhodom za terminal in izvršno datoteko ukazne vrstice. | Razlika v primerjavi z ShikiPHPPhiki opisuje svoj tokenizer kot orodje, ki ga je navdihnil vscode-textmate, vendar ni njegov prevod 1 : 1. ShikiPHP prenese orodji vscode-textmate in oniguruma-to-es ter preizkusi svoj HTML glede na izhod orodja Shiki v primerjalnih scenarijih 214. |
| highlight.php | Primerno zaStrežniški prenos orodja PHP za highlight.js, ki podpira jezike 185 z izvirnimi definicijami jezika in sloga ter lahko jezik zazna samodejno. | Razlika v primerjavi z ShikiPHPShikiPHP tokenizira s slovnicami TextMate in barva s temami VS Code, torej uporablja iste datoteke kot Shiki, pri vsakem klicu pa je treba navesti jezik. |
| Torchlight | Primerno zaStoritev za poudarjanje, združljiva z VS Code. Gre za HTTP API s pripombami v komentarjih za poudarke, fokus in razlike ter z lastnimi odjemalci za Laravel, CommonMark, Statamic in druga ogrodja. | Razlika v primerjavi z ShikiPHPShikiPHP deluje v vašem procesu PHP brez gostovanega API. Vgrajeni pretvorniki notacije berejo podobne komentarje za poudarjene vrstice, vrstice v fokusu in vrstice z razlikami. |
Vprašanja in odgovori
Kratki odgovori iz dokumentacije za ShikiPHP.
Podajte preslikavo tem z vnosi za svetli in temni način. Svetle barve so zapisane v vrstici, temne pa kot spremenljivke --shiki-dark, ki jih aktivira kratko pravilo CSS z obsegom html.dark .shiki. Nastavite defaultColor na false, da se izpišejo samo spremenljivke.
Vključene so vse slovnice iz tm-grammars 1.31.15, jeziki 235 in še 18 pomožnih slovnic ter vseh 65 tem iz tm-themes. Za izpis ID-jev zaženite vendor/bin/shikiphp langs ali vendor/bin/shikiphp themes oziroma na označevalniku pokličite bundledLanguages() in bundledThemes().
Da. Dekodirajte datoteko .tmLanguage.json in jo registrirajte z loadGrammar, pri čemer podajte ID in po želji vzdevke, ali pa registrirajte temo VS Code z loadTheme. Najprej registrirajte vse slovnice, ki jih ta vključuje ali vdeluje.
Mehanizem regularnih izrazov si zapomni neuspešne poskuse in ščiti pred ReDoS, zato se patološki vzorec upočasni, namesto da bi obstal. Nastavite tokenizeMaxLineLength, da se vsaka vrstica, ki doseže ali preseže to dolžino, odda kot en sam navaden žeton.
Dokumentacija tega odsvetuje. Kodo označite med gradnjo statičnih strani ali pa predpomnite upodobljeni HTML glede na kodo in možnosti. V procesu znova uporabite en označevalnik; to namesto vas naredi fasada Shikiphp.
Orakljski preizkusni sklop primerja ShikiPHP's HTML z Shiki 3.23.0 z uporabo Shiki's JavaScript regularnega izraza. Njegovi scenariji 214 pokrivajo 167 od 253 priloženih slovnic, ANSI in vseh 65 tem, možnosti in vgrajeni pretvorniki pa imajo lastne preizkuse enakovrednosti.
Začnite z vodnikom za prve korake, nato pa dodajte pretvornike, slovnice po meri ali izhod ANSI, ko jih vaše strani potrebujejo.