[英]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.