demyanovs/php-highlight

一个用于代码语法高亮的PHP库。

2.1.0 2023-06-13 20:53 UTC

This package is auto-updated.

Last update: 2024-09-14 21:55:16 UTC


README

PHPHighlight 是一个易于定制和扩展的PHP语法高亮库。

工作原理

库解析文本,找到 <pre> 标签,读取属性(data-lang, data-file, data-theme)并对代码块进行语法高亮。

支持样式定制。以下是一些样式示例

styling example

要求

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">
&lt;?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

贡献

欢迎提交拉取请求。对于重大更改,请首先打开一个问题来讨论您希望更改的内容。

请确保根据需要更新测试。

许可证

MIT