İçeriğe geç

ShikiPHP

Tamamen PHP ile yazılmış, Shiki uyarlaması bir sözdizimi vurgulayıcısı. Node olmadan VS Code temaları ve TextMate dilbilgileriyle kod bloklarını biçimlendirin; çıktı 214 oracle senaryosunda Shiki 3.23.0 ile eşleşir.

Terminal
composer require shikiphp/shikiphp

En son sürüm v0.1.0 MIT PHP 8.2+, ext-json, ext-mbstring

Uygulamada

Bir PHP şablonundan veya derleme betiğinden bir kod parçasını vurgulayın ve döndürdüğü HTML çıktısını yazdırın.

Her kod bloğu için tek çağrı

Shikiphp::codeToHtml kodu, bir dil kimliğini ve tema kimliğini alır. Renkleri satır içi yazılmış eksiksiz bir pre bloğu döndürür; böylece ek bir stil sayfası olmadan görüntülenir.

theme yerine bir themes eşlemesi iletin; aynı blok açık ve koyu renkleri CSS değişkenleri aracılığıyla taşır.

PHP
use Shikiphp\Shikiphp;

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

Gerçek TextMate Dilbilgileri

vscode-textmate öğesinin aslına sadık uyarlaması: gömülü diller, eklemeler ve iç içe depolar. Aynı dilbilgileri Shiki ve VS Code ile belirteçleştirir.

VS Code Temaları

vscode-textmate'dan uyarlanan kapsam seçici önceliği ve üst kapsam eşleştirmesi. Tek tema veya CSS değişkenleriyle açık/koyu çift teması.

Shiki ile Birebir Aynı Çıktı

253 paketindeki dilbilgilerinin 167 kadarını, ANSI'yi ve 65 temanın tümünü kapsayan 214 oracle senaryosunun çıktısı, JavaScript düzenli ifade altyapısını kullanan Shiki 3.23.0 çıktısıyla, baştaki ve sondaki boşluklar dışında birebir eşleşir: HTML.

Saf PHP Düzenli İfade Altyapısı

inline0/phasis kaynaklı, sağlayıcıyla paketlenmiş bir JavaScript RegExp altyapısı; girdisi oniguruma-to-es uyarlamasıdır. Shiki öğesinin JavaScript düzenli ifade altyapısı da aynı Oniguruma-RegExp yolunu izler.

Dönüştürücüler

Yerleşik notasyon, meta ve boşluk dönüştürücüleriyle birlikte her Shiki kancası (preprocess, tokens, root, pre, code, line, span, postprocess).

Pakette Her Şey

Her tm-grammars dili (235 ve 18 yardımcı dilbilgisi) ile tm-themes temasının (65) tümü pakete dahildir. ANSI terminal çıktısı, dekorasyonlar ve colorReplacements da içerilir.

CLI

bin/shikiphp ile bir dosyayı HTML için vurgulayın veya paketlenmiş dilleri ve temaları doğrudan komut satırından listeleyin.

Node Gerektirmez

Yalnızca ext-json ve ext-mbstring gerektiren PHP 8.2+ üzerinde çalışır. Node çalışma zamanı, yerel Oniguruma bağlaması veya kabuk komutu çağırma gerekmez.

ShikiPHP neden tercih edilmeli

PHP nerede çalışıyorsa orada çalışır

Vurgulama, Node'u kabuktan çağırmadan veya barındırılan bir API hizmetine başvurmadan, PHP sürecinde gerçekleşir. Laravel, WordPress veya statik site derleme adımı için uygundur.

Önbelleğe alınabilir çıktı

Aynı seçeneklerle aynı kod her zaman aynı HTML çıktısını üretir. Derleme zamanında vurgulayın veya kaynağı değişene kadar kod ve seçeneklere göre anahtarlanmış HTML çıktısını önbelleğe alın.

Açık ve koyu için tek blok

Tema eşlemesi ikinci temayı aynı işaretlemede CSS değişkenleri olarak yazar; birkaç satır CSS ile bu temaya geçebilirsiniz. defaultColor seçeneği, hangi temanın satır içi yazılacağını belirler.

Güvenilmeyen girdiler için sınırlar

Düzenli ifade altyapısı başarısızlıkları belleğe alır ve ReDoS'a karşı korur; bu nedenle sorunlu desen sistemi kilitlemek yerine yavaşlar. tokenizeMaxLineLength seçeneği, aşırı uzun satırları tek bir düz metin belirteci olarak verir.

Karşılaştırma

PHP sitesi için kod vurgulamanın diğer yolları ve ShikiPHP ile aralarındaki farklar.

ShikiPHP ile diğer araçların karşılaştırması
Shiki Şu konularda başarılıJavaScript içindeki başvuru uygulamasıdır. Modern tüm JavaScript çalışma zamanlarında Node.js API'leri olmadan çalışır, dilbilgilerini ve temaları isteğe bağlı yükler ve TypeScript Twoslash entegrasyonlarına sahiptir. ShikiPHP ile farkıShikiPHP, bu işlem hattını PHP diline taşıyarak PHP sunucusunda işlenen sayfalara uyarlar. Oracle altyapısı HTML çıktısını Shiki 3.23.0 ile karşılaştırırken, Shiki ana dalı artık v4 kullanıyor.
Phiki Şu konularda başarılıPHP tabanlı ve TextMate dilbilgileriyle VS Code temalarını da kullanan bir vurgulayıcıdır. Laravel Str::markdown ile çalışan bir league/commonmark uzantısı, terminal çıktısı ve komut satırı ikilisi sunar. ShikiPHP ile farkıPhiki, belirteç ayrıştırıcısını vscode-textmate'dan esinlenmiş olarak tanımlar; ancak bire bir çeviri olmadığını belirtir. ShikiPHP, vscode-textmate ve oniguruma-to-es öğelerini uyarlar ve HTML çıktısını 214 oracle senaryolarında Shiki çıktısıyla karşılaştırarak test eder.
highlight.php Şu konularda başarılıOrijinal dil ve stil tanımlarıyla 185 dili destekleyen ve dili otomatik algılayabilen, sunucu tarafında çalışan bir highlight.js uyarlaması olan PHP. ShikiPHP ile farkıShikiPHP, TextMate gramerleriyle belirteçlere ayırır ve VS Code temalarıyla renklendirir; aynı dosyaları Shiki kullanır ve her çağrıda dil adı belirtilir.
Torchlight Şu konularda başarılıVS Code uyumlu bir vurgulama hizmeti. Vurgulamalar, odak ve farklar için yorum ek açıklamaları sunan bir HTTP API’dır ve Laravel, CommonMark, Statamic ve diğer teknoloji yığınları için birinci taraf istemcilere sahiptir. ShikiPHP ile farkıShikiPHP, barındırılan bir API olmadan PHP süreciniz içinde çalışır. Yerleşik gösterim dönüştürücüleri; vurgulanan, odaklanan ve fark satırları için karşılık gelen yorumları okur.

Sorular ve yanıtlar

ShikiPHP dokümantasyonundan kısa yanıtlar.

Başlangıç kılavuzuyla başlayın; ardından sayfalarınız ihtiyaç duyduğunda dönüştürücüler, özel gramerler veya ANSI çıktısı ekleyin.