Gå til indhold

ShikiPHP

Ren PHP-syntaksfremhæver, en port af Shiki. Formatér kodeblokke med VS Code-temaer og TextMate-grammatikker uden Node; outputtet matcher Shiki 3.23.0 på tværs af 214 oracle-scenarier.

Terminal
composer require shikiphp/shikiphp

Seneste udgivelse v0.1.0 MIT PHP 8.2+, ext-json, ext-mbstring

I praksis

Fremhæv et uddrag fra en PHP-skabelon eller et byggescript, og udskriv den HTML, det returnerer.

Ét kald pr. kodeblok

Shikiphp::codeToHtml tager koden, et sprog-id og et tema-id. Den returnerer en komplet pre-blok med farverne skrevet inline, så den vises uden et ekstra stilark.

Send et themes-kort i stedet for theme, så får den samme blok lyse og mørke farver via CSS-variabler.

PHP
use Shikiphp\Shikiphp;

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

Ægte TextMate-grammatikker

En trofast port af vscode-textmate: indlejrede sprog, injektioner og indlejrede repositories. De samme grammatikker, som Shiki og VS Code tokeniserer med.

VS Code-temaer

Specificitet for scopevælgere og matchning af overordnede scopes, porteret fra vscode-textmate. Ét tema eller dobbelt lyst/mørkt via CSS-variabler.

Output identisk med Shiki

214 oracle-scenarier, der dækker 167 af de 253 medfølgende grammatikker, ANSI og alle 65 temaer, matcher HTML fra Shiki 3.23.0 med dens JavaScript-regexmotor, nøjagtigt bortset fra indledende og afsluttende blanktegn.

Regexmotor i ren PHP

En medfølgende JavaScript RegExp-motor fra inline0/phasis, drevet af en port af oniguruma-to-es. Shikis JavaScript-regexmotor følger samme sti fra Oniguruma til RegExp.

Transformere

Alle Shiki-hooks (preprocess, tokens, root, pre, code, line, span, postprocess) samt de indbyggede transformationsværktøjer til notation, meta og mellemrum.

Hele pakken

Alle tm-grammars-sprog (235 plus 18 hjælpegrammatikker) og tm-themes-temaer (65) følger med. ANSI-terminaloutput, dekorationer og colorReplacements er også inkluderet.

CLI

Fremhæv en fil med HTML, eller få en liste over medfølgende sprog og temaer direkte fra kommandolinjen med bin/shikiphp.

Ingen Node

Kører på PHP 8.2+ med kun ext-json og ext-mbstring. Ingen Node-runtime, ingen native Oniguruma-binding og ingen kald til shellen.

Hvorfor ShikiPHP

Kører dér, hvor din PHP kører

Fremhævningen foregår i PHP-processen uden kald til shellen for at starte Node eller kontakt til en hostet API. Det passer til et byggetrin for Laravel, WordPress eller et statisk websted.

Output, der kan caches

Den samme kode med de samme indstillinger giver altid det samme HTML. Fremhæv ved byggetidspunktet, eller cache HTML efter kode og indstillinger, indtil kilden ændres.

Én blok til lyst og mørkt

Et temakort skriver det andet tema som CSS-variabler i den samme markup, og nogle få linjer CSS skifter til det. Indstillingen defaultColor vælger, hvilket tema der skrives inline.

Begrænsninger for ikke-betroet input

Regexmotoren gemmer mislykkede forsøg i cache og beskytter mod ReDoS, så et patologisk mønster gør behandlingen langsommere i stedet for at hænge. Indstillingen tokenizeMaxLineLength udsender for lange linjer som ét almindeligt token.

Sammenlignet med

Andre måder at fremhæve kode på et PHP-websted, og hvordan ShikiPHP adskiller sig.

ShikiPHP sammenlignet med andre værktøjer
Shiki God tilReferenceimplementeringen i JavaScript. Den virker i enhver moderne JavaScript-runtime uden Node.js-API'er, indlæser grammatikker og temaer efter behov og har TypeScript-integrationer til Twoslash. Forskel fra ShikiPHPShikiPHP porterer denne pipeline til PHP til sider, der gengives på en PHP-server. Dets oracle-testværktøj sammenligner dets HTML med Shiki 3.23.0, mens Shikis hovedgren er gået videre til v4.
Phiki God tilEn PHP-fremhæver, der også bruger TextMate-grammatikker og VS Code-temaer. Den leveres med en league/commonmark-udvidelse, der virker med Laravels Str::markdown, terminaloutput og et kommandolinjeprogram. Forskel fra ShikiPHPPhiki beskriver sin tokenizer som inspireret af vscode-textmate, men ikke som en 1-til-1-oversættelse. ShikiPHP porter vscode-textmate og oniguruma-to-es og tester sin HTML mod Shikis output i 214 oracle-scenarier.
highlight.php God tilEn serverbaseret port af highlight.js til PHP, der understøtter 185 sprog med de oprindelige sprog- og stildefinitioner og kan registrere sproget automatisk. Forskel fra ShikiPHPShikiPHP tokeniserer med TextMate-grammatikker og farvelægger med VS Code-temaer, de samme filer som Shiki bruger, og hvert kald angiver sproget.
Torchlight God tilEn fremhævningstjeneste, der er kompatibel med VS Code. Den er en HTTP API med kommentarannotationer til fremhævning, fokus og forskelle samt førstepartsklienter til Laravel, CommonMark, Statamic og andre teknologistakke. Forskel fra ShikiPHPShikiPHP kører i din PHP-proces uden en hostet API. De indbyggede notationstransformere læser tilsvarende kommentarer for fremhævede linjer, fokuslinjer og ændringslinjer.

Spørgsmål og svar

Korte svar fra ShikiPHP-dokumentationen.

Begynd med introduktionsvejledningen, og tilføj derefter transformere, brugerdefinerede grammatikker eller ANSI-output, når dine sider har brug for dem.