Μετάβαση στο περιεχόμενο

ShikiPHP

Αμιγής επισημαντής σύνταξης PHP, μεταφορά του Shiki. Μορφοποιήστε μπλοκ κώδικα με θέματα VS Code και γραμματικές TextMate χωρίς Node· η έξοδος ταιριάζει με το Shiki 3.23.0 σε όλα τα σενάρια oracle 214.

Τερματικό
composer require shikiphp/shikiphp

Τελευταία έκδοση v0.1.0 MIT PHP 8.2+, ext-json, ext-mbstring

Στην πράξη

Επισημάνετε ένα απόσπασμα από πρότυπο PHP ή σενάριο δημιουργίας και εκτυπώστε το HTML που επιστρέφει.

Μία κλήση ανά μπλοκ κώδικα

Το Shikiphp::codeToHtml δέχεται τον κώδικα, ένα αναγνωριστικό γλώσσας και ένα αναγνωριστικό θέματος. Επιστρέφει ένα πλήρες μπλοκ pre με τα χρώματα ενσωματωμένα, ώστε να αποδίδεται χωρίς επιπλέον φύλλο στυλ.

Περάστε έναν χάρτη themes αντί για theme και το ίδιο μπλοκ θα περιλαμβάνει φωτεινά και σκοτεινά χρώματα μέσω μεταβλητών CSS.

PHP
use Shikiphp\Shikiphp;

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

Πραγματικές γραμματικές TextMate

Πιστή μεταφορά του vscode-textmate: ενσωματωμένες γλώσσες, ενσωματώσεις και εμφωλευμένα αποθετήρια. Οι ίδιες γραμματικές με τις οποίες κάνουν τοκενικοποίηση τα Shiki και VS Code.

Θέματα VS Code

Ειδικότητα επιλογέα scope και αντιστοίχιση γονικών scope, μεταφερμένες από το vscode-textmate. Ένα θέμα ή διπλό φωτεινό/σκοτεινό μέσω μεταβλητών CSS.

Έξοδος πανομοιότυπη με Shiki

Τα σενάρια oracle 214, που καλύπτουν 167 από τις 253 ενσωματωμένες γραμματικές, το ANSI και τα 65 θέματα, παράγουν αποτέλεσμα που ταιριάζει με το HTML του Shiki 3.23.0 με τη μηχανή regex JavaScript του, εκτός από τα αρχικά και τελικά κενά.

Μηχανή regex αποκλειστικά σε PHP

Μια ενσωματωμένη μηχανή RegExp JavaScript από το inline0/phasis, με τροφοδότηση από μεταφορά oniguruma-to-es. Η μηχανή regex JavaScript του Shiki ακολουθεί την ίδια διαδρομή Oniguruma προς RegExp.

Μετασχηματιστές

Κάθε hook του Shiki (preprocess, tokens, root, pre, code, line, span, postprocess), μαζί με τους ενσωματωμένους μετασχηματιστές σημειογραφίας, μεταδεδομένων και κενών χαρακτήρων.

Το πλήρες πακέτο

Περιλαμβάνονται όλες οι γλώσσες tm-grammars (235, συν 18 βοηθητικές γραμματικές) και όλα τα θέματα tm-themes (65). Περιλαμβάνονται επίσης έξοδος τερματικού ANSI, διακοσμήσεις και colorReplacements.

CLI

Επισημάνετε ένα αρχείο για το HTML ή εμφανίστε τις ενσωματωμένες γλώσσες και τα θέματα απευθείας από τη γραμμή εντολών με το bin/shikiphp.

Χωρίς Node

Εκτελείται σε PHP 8.2+ μόνο με τα ext-json και ext-mbstring. Χωρίς περιβάλλον εκτέλεσης Node, εγγενή σύνδεση Oniguruma ή κλήση εξωτερικών εντολών.

Γιατί ShikiPHP

Εκτελείται εκεί όπου εκτελείται το PHP σας

Η επισήμανση γίνεται μέσα στη διεργασία PHP, χωρίς κλήση του Node μέσω κελύφους ή κλήση φιλοξενούμενου API. Ταιριάζει σε βήμα δημιουργίας για Laravel, WordPress ή στατικό ιστότοπο.

Αποτέλεσμα που αποθηκεύεται στην κρυφή μνήμη

Ο ίδιος κώδικας με τις ίδιες επιλογές παράγει πάντα το ίδιο HTML. Κάντε επισήμανση κατά τη δημιουργία ή αποθηκεύστε το HTML στην κρυφή μνήμη με κλειδί τον κώδικα και τις επιλογές, μέχρι να αλλάξει η πηγή.

Ένα μπλοκ για φωτεινή και σκοτεινή εμφάνιση

Ένας χάρτης θεμάτων γράφει το δεύτερο θέμα ως μεταβλητές CSS στην ίδια σήμανση και λίγες γραμμές CSS αλλάζουν σε αυτό. Η επιλογή defaultColor καθορίζει ποιο θέμα ενσωματώνεται.

Όρια για μη έμπιστη είσοδο

Η μηχανή regex αποθηκεύει αποτυχημένες αντιστοιχίσεις και προστατεύεται από ReDoS, ώστε ένα παθολογικό μοτίβο να επιβραδύνει την εκτέλεση αντί να την κολλήσει. Η επιλογή tokenizeMaxLineLength αποδίδει τις υπερβολικά μεγάλες γραμμές ως ένα απλό διακριτικό.

Σε σύγκριση με

Άλλοι τρόποι επισήμανσης κώδικα για ιστότοπο PHP και οι διαφορές του ShikiPHP.

Το ShikiPHP σε σύγκριση με άλλα εργαλεία
Shiki Κατάλληλο γιαΗ υλοποίηση αναφοράς, σε JavaScript. Λειτουργεί σε κάθε σύγχρονο περιβάλλον εκτέλεσης JavaScript χωρίς API Node.js, φορτώνει γραμματικές και θέματα κατά απαίτηση και διαθέτει ενσωματώσεις Twoslash TypeScript. Διαφορά με το ShikiPHPΤο ShikiPHP μεταφέρει αυτή την ακολουθία στο PHP για σελίδες που αποδίδονται σε διακομιστή PHP. Το περιβάλλον oracle συγκρίνει το HTML του με το 3.23.0 Shiki, ενώ ο κύριος κλάδος του Shiki έχει προχωρήσει στο v4.
Phiki Κατάλληλο γιαΈνας επισημαντής PHP που χρησιμοποιεί επίσης γραμματικές TextMate και θέματα VS Code. Περιλαμβάνει επέκταση league/commonmark που λειτουργεί με το Str::markdown του Laravel, έξοδο τερματικού και εκτελέσιμο αρχείο γραμμής εντολών. Διαφορά με το ShikiPHPΤο Phiki περιγράφει τον αναλυτή διακριτικών του ως εμπνευσμένο από το vscode-textmate, αλλά όχι ως μετάφραση 1 προς 1. Το ShikiPHP μεταφέρει τα vscode-textmate και oniguruma-to-es και ελέγχει το HTML του ως προς την έξοδο του Shiki στα σενάρια oracle 214.
highlight.php Κατάλληλο γιαΜια μεταφορά PHP του highlight.js για την πλευρά του διακομιστή, με υποστήριξη 185 γλωσσών και τους αρχικούς ορισμούς γλωσσών και στυλ, καθώς και αυτόματη ανίχνευση γλώσσας. Διαφορά με το ShikiPHPΤο ShikiPHP κάνει τοκενικοποίηση με γραμματικές TextMate και χρωματίζει με θέματα VS Code, χρησιμοποιώντας τα ίδια αρχεία με το Shiki, ενώ κάθε κλήση ορίζει τη γλώσσα.
Torchlight Κατάλληλο γιαΜια υπηρεσία επισήμανσης συμβατή με VS Code. Είναι HTTP API με σχολιασμούς για επισημάνσεις, εστίαση και διαφορές, και διαθέτει επίσημα προγράμματα-πελάτες για Laravel, CommonMark, Statamic και άλλα περιβάλλοντα. Διαφορά με το ShikiPHPΤο ShikiPHP εκτελείται μέσα στη διεργασία PHP, χωρίς φιλοξενούμενο API. Οι ενσωματωμένοι μετασχηματιστές σημειογραφίας διαβάζουν αντίστοιχα σχόλια για επισημασμένες γραμμές, γραμμές εστίασης και διαφορών.

Ερωτήσεις και απαντήσεις

Σύντομες απαντήσεις από την τεκμηρίωση του ShikiPHP.

Ξεκινήστε με τον οδηγό έναρξης και στη συνέχεια προσθέστε μετασχηματιστές, προσαρμοσμένες γραμματικές ή έξοδο ANSI, όταν τις χρειάζονται οι σελίδες σας.