我正在从exec()
函数中获取输出,我想在结果中突出显示一些语法。
原始输出
当前输出是原始的:
* [35mmanu[m/etc/init.d/mast: line 105: /var/log/mast/mast-all.log: Permission denied
诸如在 shell 上下文中突出显示[35m
颜色的文本。
目标
我想用 HTML 来做,我已经有一个彩色的 shell 脚本。
我正在从exec()
函数中获取输出,我想在结果中突出显示一些语法。
当前输出是原始的:
* [35mmanu[m/etc/init.d/mast: line 105: /var/log/mast/mast-all.log: Permission denied
诸如在 shell 上下文中突出显示[35m
颜色的文本。
我想用 HTML 来做,我已经有一个彩色的 shell 脚本。
将 ANSI 转义(终端格式/颜色代码)转换为 HTML的问题库对此问题有答案。
aha是用C编写的Ansi到HTML适配器。它在 Ubuntu 软件包和 github theZiz/aha上可用。
我的代码很简单:
exec("$command | aha", $output, $exitCode);
foreach($output as $k => $line) {
if ($line == '1') { continue; }
echo "$line";
}
aha takes SGR-colored Input and prints W3C conform HTML-Code.
aha reads the Input from a file or stdin and writes HTML-Code to stdout.
有一些不错的选择:
--black
, -b
: 黑色背景和白色“标准颜色”--word-wrap
, -w
: 在 html 文件中换行。这适用于支持 CSS3 的浏览器以及许多较旧的浏览器。--no-header
, -n
: 不要在生成的 HTML 中包含标题,这对于包含在完整的 HTML 文件中很有用。多亏了 symfony,你也可以用纯 PHP 来做。使用ansi-to-html库。它没有依赖关系,因此不需要使用 symfony。
SensioLabs\AnsiConverter\AnsiToHtmlConverte.php
您可以通过在源文件夹中处理或使用 composer composer require sensiolabs/ansi-to-html手动安装它
之后只是一个
require_once __DIR__.'/vendor/autoload.php';
use SensioLabs\AnsiConverter\AnsiToHtmlConverter;
$converter = new AnsiToHtmlConverter();
$html = $converter->convert($ansi);