0

我正在从exec()函数中获取输出,我想在结果中突出显示一些语法。

原始输出

当前输出是原始的:

* [35mmanu[m/etc/init.d/mast: line 105: /var/log/mast/mast-all.log: Permission denied 

诸如在 shell 上下文中突出显示[35m颜色的文本。

目标

我想用 HTML 来做,我已经有一个彩色的 shell 脚本。

突出显示的语法

4

2 回答 2

1

将 ANSI 转义(终端格式/颜色代码)转换为 HTML的问题库对此问题有答案。

解决方案

aha用C编写的AnsiHTML适配器。它在 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 文件中很有用。
于 2014-07-27T14:46:30.653 回答
1

多亏了 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);
于 2018-08-05T12:40:53.840 回答