Ga naar de inhoud

ShikiPHP

Pure PHP-syntaxmarkering, een port van Shiki. Stijl codeblokken met VS Code thema's en TextMate grammatica's zonder Node; de uitvoer komt overeen met Shiki 3.23.0 in 214 oracle-scenario's.

Terminal
composer require shikiphp/shikiphp

Nieuwste release v0.1.0 MIT PHP 8.2+, ext-json, ext-mbstring

In de praktijk

Markeer een fragment uit een PHP-template of buildscripts en druk de HTML af die het oplevert.

Eén aanroep per codeblok

Shikiphp::codeToHtml neemt de code, een taal-id en een thema-id. Het retourneert een volledig pre-blok met inline geschreven kleuren, zodat het zonder extra stylesheet wordt weergegeven.

Geef een kaart met themes door in plaats van theme, en hetzelfde blok bevat lichte en donkere kleuren via variabelen van CSS.

PHP
use Shikiphp\Shikiphp;

echo Shikiphp::codeToHtml(<<<'PHP'
<?php
function greet(string $name): string {
    return "Hello, {$name}!";
}
PHP, [
    'lang'  => 'php',
    'theme' => 'github-dark',
]);

Echte TextMate-grammatica's

Een getrouwe port van vscode-textmate: ingebedde talen, injecties en geneste repositories. Dezelfde grammatica's waarmee Shiki en VS Code tokeniseren.

VS Code-thema's

Specificiteit van scope-selectors en matching van bovenliggende scopes, overgezet vanuit vscode-textmate. Eén thema of een dubbel licht/donker-thema via CSS-variabelen.

Uitvoer identiek aan Shiki

In 214 oracle-scenario's komt de uitvoer overeen met die van HTML in Shiki 3.23.0 en de JavaScript-regex-engine, op witruimte aan begin en einde na; de scenario's omvatten 167 van de 253 meegeleverde grammatica's, ANSI en alle 65 thema's.

Pure PHP-regex-engine

Een meegeleverde JavaScript RegExp-engine van inline0/phasis, aangedreven door een oniguruma-to-es-port. De regex-engine van Shiki JavaScript volgt hetzelfde pad van Oniguruma naar RegExp.

Transformers

Alle hooks van Shiki (preprocess, tokens, root, pre, code, line, span, postprocess), plus de ingebouwde transformers voor notaties, metadata en witruimte.

De volledige bundel

Alle talen van tm-grammars (235 plus 18 hulpgrammatica's) en alle thema's van tm-themes (65) zijn inbegrepen. Inclusief uitvoer voor ANSI-terminals, decoraties en colorReplacements.

CLI

Markeer een bestand met HTML, of geef de meegeleverde talen en thema's rechtstreeks vanaf de opdrachtregel weer met bin/shikiphp.

Geen Node

Werkt met PHP 8.2+ en alleen ext-json en ext-mbstring. Geen Node-runtime, geen native Oniguruma-binding en geen externe opdrachten.

Waarom ShikiPHP

Draait waar uw PHP draait

Markeren gebeurt binnen het PHP-proces, zonder Node als externe opdracht uit te voeren of een gehoste API aan te roepen. Dat past bij een buildstap voor Laravel, WordPress of een statische site.

Uitvoer die u kunt cachen

Dezelfde code met dezelfde opties levert altijd dezelfde HTML op. Markeer tijdens het bouwen of cache de HTML op basis van code en opties totdat de bron verandert.

Eén blok voor licht en donker

Een themakaart schrijft het tweede thema als variabelen van CSS in dezelfde markup; met enkele regels CSS schakelt u ernaar over. De optie defaultColor bepaalt welk thema inline wordt geschreven.

Grenzen voor niet-vertrouwde invoer

De regex-engine onthoudt mislukte pogingen en beschermt tegen ReDoS, zodat een pathologisch patroon trager wordt in plaats van vast te lopen. De optie tokenizeMaxLineLength geeft te lange regels als één gewoon token weer.

Vergeleken met

Andere manieren om code te markeren voor een PHP-site, en waarin ShikiPHP verschilt.

ShikiPHP vergeleken met andere tools
Shiki Goed inDe referentie-implementatie, in JavaScript. Deze werkt in elke moderne JavaScript-runtime zonder Node.js-API's, laadt grammatica's en thema's op aanvraag en heeft TypeScript-integraties voor Twoslash. Verschil met ShikiPHPShikiPHP zet die pipeline over naar PHP voor pagina's die op een PHP-server worden gerenderd. Het oracle-testharnas vergelijkt de HTML met Shiki 3.23.0, terwijl de hoofdtak van Shiki is overgestapt op v4.
Phiki Goed inEen PHP-highlighter die ook grammatica's van TextMate en thema's van VS Code gebruikt. Het levert een league/commonmark-extensie die werkt met Str::markdown van Laravel, terminaluitvoer en een uitvoerbaar bestand voor de opdrachtregel. Verschil met ShikiPHPPhiki beschrijft zijn tokenizer als geïnspireerd door vscode-textmate, maar niet als een 1-op-1-vertaling. ShikiPHP zet vscode-textmate en oniguruma-to-es over en test de HTML tegen de uitvoer van Shiki in 214 oracle-scenario's.
highlight.php Goed inEen server-side PHP-port van highlight.js die 185 talen ondersteunt met de oorspronkelijke taal- en stijldefinities en de taal automatisch kan herkennen. Verschil met ShikiPHPShikiPHP tokeniseert met grammatica's van TextMate en kleurt met thema's van VS Code, dezelfde bestanden die Shiki gebruikt; bij elke aanroep moet de taal worden opgegeven.
Torchlight Goed inEen VS Code-compatibele markeerdienst. Het is een HTTP API met commentaarannotaties voor markeringen, focus en verschillen, en heeft officiële clients voor Laravel, CommonMark, Statamic en andere stacks. Verschil met ShikiPHPShikiPHP draait binnen uw PHP-proces zonder gehoste API. De ingebouwde notatietransformers lezen vergelijkbare commentaren voor gemarkeerde, gefocuste en gewijzigde regels.

Vragen en antwoorden

Korte antwoorden uit de documentatie van ShikiPHP.

Begin met de snelstartgids en voeg daarna transformers, aangepaste grammatica's of ANSI-uitvoer toe wanneer uw pagina's dat nodig hebben.