繁体   English   中英

如何语法突出显示PHP中exec()函数的输出?

[英]How can I syntax highlight the output from the exec() function in PHP?

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

原始输出

当前输出是原始的:

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

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

目标

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

高亮语法

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

aha是用C编写的Ansi to HTML Adapter。 它可以在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需要sensiolabs / ansi-to-html

在那之后

require_once __DIR__.'/vendor/autoload.php';

use SensioLabs\AnsiConverter\AnsiToHtmlConverter;

$converter = new AnsiToHtmlConverter();

$html = $converter->convert($ansi);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM