dan-da / highlight.php
支持 185 种语言的服务器端语法高亮工具。它是 highlight.js 的 PHP 版本,实现了默认 CLI (ansi) 颜色方案。
Requires
- ext-json: *
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: ^4.8|^5.7
- dev-master
- v9.15.6.2
- v9.15.6.1
- v9.15.6.0
- v9.15.1.0
- v9.15.0.0
- v9.14.2.0
- v9.14.1.0
- v9.14.0.0
- v9.13.1.1
- v9.13.1.0
- v9.13.0.0
- v9.12.0.5
- v9.12.0.4
- v9.12.0.3
- v9.12.0.2
- v9.12.0.1
- v9.12.0
- v9.0.0
- v8.9.1
- v8.8.0
- v8.7
- v8.6
- v8.5
- v8.4
- v8.3
- v8.2
- v8.1
- v8.0
- v7.5
- dev-cli_default_theme_pr
- dev-yaml_pr
- dev-php_formats_pr
This package is auto-updated.
Last update: 2024-08-27 04:26:56 UTC
README
highlight.php 是一个用 PHP 编写的服务器端代码高亮工具,目前支持 185 种语言。它是 Ivan Sagalaev 的 highlight.js 的端口,充分利用了原始 JavaScript 项目的语言和样式定义。
原始 highlight.js 和 highlight.php 通过 CSS 类来实现高亮,用于 HTML。
geekdevs/highlight.php 是一个分支,它支持使用 ansi 转义序列来为 CLI 颜色使用 CSS 类,但它(截至编写时)没有定义一组有用的默认颜色。
dan-da/highlight.php 是一个分支,它实现了默认 CLI 颜色的(部分)集合,并且只关心这一点。
如果您不需要 CLI(ansi)颜色,您应该坚持使用其他分支之一。
安装 + 设置
建议通过 Composer 安装项目。
composer require dan-da/highlight.php
如果您不使用 Composer,请确保通过包含或自动加载器可以找到 Highlight
命名空间中定义的类。为此,此项目包含一个简单的自动加载器,作为 Highlight\Autoloader.php
。
用法
CLI 高亮显示
$jsonbuf = json_encode( ['age': 10, 'weight': 90] );
$highlighter = new \Highlight\Highlighter(
new \Highlight\Decorator\StatefulCliDecorator([])
);
echo $highlighter->highlight('json', $jsonbuf)->value;
Highlight\Highlighter
类包含高亮显示功能。您可以选择两种高亮显示模式:
- 显式模式
- 自动语言检测模式
显式模式
在显式模式下,您必须定义您将高亮显示的语言。
// Instantiate the Highlighter. $hl = new Highlight\Highlighter(); $code = file_get_contents('some_ruby_script.rb'); try { // Highlight some code. $highlighted = $hl->highlight('ruby', $code); echo "<pre class=\"hljs {$highlighted->language}\">\n"; echo $highlighted->value . "\n"; echo "</pre>\n"; } catch (DomainException $e) { // This is thrown if the specified language does not exist echo "<pre>\n"; echo $code . "\n"; echo "</pre>\n"; }
自动语言检测模式
或者,您可以使用自动检测模式,该模式会根据库认为最好的语言来高亮显示您的代码。
警告:您必须提供
Highlighter
将从中选择的语言列表。这将采取暴力方式,选择结果最准确的语言。这非常低效,因为您提供的语言越多,可能不一定总是 100% 准确。强烈建议您明确选择语言或限制自动检测的语言数量,以减少不准确的数量。
$hl = new Highlight\Highlighter(); $hl->setAutodetectLanguages(array('ruby', 'python', 'perl')); $highlighted = $hl->highlightAuto(file_get_contents('some_ruby_script.rb')); echo "<pre class=\"hljs {$highlighted->language}\">\n"; echo $highlighted->value . "\n"; echo "</pre>\n";
样式表
在 highlight.js 项目中可用的相同样式表都位于此项目的 styles
目录中,可以将其包含在您的 CSS 中或使您的 Web 服务器可以访问。
版本控制
该项目将与 highlight.js 项目相同的版本号遵循语言,这意味着在 highlight.js 9.12.0 中可用的语言定义也将可用在 highlight.php 9.12.0 中。但是,有时这个项目或其翻译定义文件可能会出现错误,因此将在版本号后附加一个数字。例如,版本 9.12.0.1 将包含与 highlight.js 9.12.0 相同的所有语言,但也将包含仅针对此项目的修复。这样做是为了使此项目可以在 highlight.js 发布版本 9.12.1 时避免版本冲突。
向后兼容承诺
尽管本项目使用的语义化版本控制与highlight.js相同,但本项目将遵守Symfony向后兼容性承诺。您可以放心,在9.x
期间不会有破坏性更改,任何弃用功能都会用@deprecated
标记,并在下一个主要版本中才会移除。
一些历史
丹·利比 2019年6月26日
从geekdevs/highlight.php分支出来以添加默认CLI配色方案。
吉尔特·伯格曼 2013年9月30日
JavaScript代码高亮非常方便,在很多情况下正是您想要使用的。特别是对于编程博客,我建议您不要使用其他方式。但有时您可能更适合使用更“静态”的方法,例如,如果您想要在电子邮件中发送高亮代码或用于API文档。为此,我需要一个最好是PHP编写的代码高亮程序。
我找不到任何令人满意的PHP解决方案,所以我决定从JavaScript移植一个。经过对不同高亮程序基于许可、技术、语言支持等方面的比较,我认为highlight.js是最受欢迎的。
我的决定不是制作一个PHP高亮器,而是将highlight.js进行移植,这两者是不同的事情。目标是让它与highlight.js完全一样,尽可能多地使用原始程序的语言定义和CSS文件。
编码愉快!