demyanovs / php-highlight
一个用于代码语法高亮的PHP库。
2.1.0
2023-06-13 20:53 UTC
Requires
- php: >=8.1
Requires (Dev)
- doctrine/coding-standard: ^12.0
- phpunit/phpunit: ^10.2
- squizlabs/php_codesniffer: *
README
PHPHighlight 是一个易于定制和扩展的PHP语法高亮库。
工作原理
库解析文本,找到 <pre> 标签,读取属性(data-lang, data-file, data-theme)并对代码块进行语法高亮。
支持样式定制。以下是一些样式示例
要求
PHP 8.1+
安装
您可以通过composer安装包
$ composer require demyanovs/php-highlight
使用方法
请参见完整示例 index.php
<?php require_once 'vendor/autoload.php'; use Demyanovs\PHPHighlight\Highlighter; use Demyanovs\PHPHighlight\Themes\ObsidianTheme; $text = ' <pre data-file="php-highlight/examples/index.php" data-lang="php"> <?php abstract class AbstractClass { /** * Our abstract method only needs to define the required arguments */ abstract protected function prefixName(string $name): string; } class ConcreteClass extends AbstractClass { /** * Our child class may define optional arguments not in the parent\'s signature */ public function prefixName(string $name): string { $prefix = ""; if ($name === "Pacman") { $prefix = "Mr."; } elseif ($name === "Pacwoman") { $prefix = "Mrs."; } else { } return $prefix . " " . $name; } } $class = new ConcreteClass; echo $class->prefixName("Pacman"), "\n"; echo $class->prefixName("Pacwoman"), "\n"; </pre> '; $highlighter = new Highlighter($text, ObsidianTheme::TITLE); // Configuration $highlighter->showLineNumbers(true); $highlighter->showActionPanel(true); echo $highlighter->parse();
定制
$highlighter->showLineNumbers(true); $highlighter->showActionPanel(true);
您可以在 <pre> 标签中设置以下属性 <pre data-lang="php" data-file="example.php" data-theme="drakuala">
- lang - 文本的编程语言。这会影响解析器如何高亮语法。
- file - 在操作面板中显示文件名。
- theme - 允许覆盖全局主题。
如何创建自定义主题
要创建自定义主题,您需要创建 Demyanovs\PHPHighlight\Themes\Theme 类的实例,并将其作为第三个参数传递给Highlighter
$defaultColorSchemaDto = new DefaultColorSchemaDto(...); $PHPColorSchemaDto = new PHPColorSchemaDto(...); $XMLColorSchemaDto = new XMLColorSchemaDto(...); $myTheme = new Theme( 'myThemeTitle', $defaultColorSchemaDto, $PHPColorSchemaDto, $XMLColorSchemaDto ); $highlighter = new Highlighter($text, 'myThemeTitle', [$myTheme]);
支持的语言语法
- PHP
- JavaScript
- XML/HTML
- Bash
- Go
- 以及其他
主题
- 默认
- darkula
- railscasts
- obsidian
- far
- vs2015
- c64
贡献
欢迎提交拉取请求。对于重大更改,请首先打开一个问题来讨论您希望更改的内容。
请确保根据需要更新测试。