sensiolabs / ansi-to-html
一个将包含ANSI代码的文本转换为HTML的库
v1.2.1
2020-10-06 05:48 UTC
README
这个小型库只做一件事:将包含ANSI代码的文本转换为HTML5片段
require_once __DIR__.'/vendor/autoload.php'; use SensioLabs\AnsiConverter\AnsiToHtmlConverter; $converter = new AnsiToHtmlConverter(); $html = $converter->convert($ansi);
$ansi
变量应包含包含ANSI代码的文本,而$html
将包含其转换后的HTML5版本。
然后您可以在任何HTML文档中输出HTML5片段
<html> <body> <pre style="background-color: black; overflow: auto; padding: 10px 15px; font-family: monospace;" ><?php echo $html ?></pre> </body> </html>
转换器支持不同的颜色主题
use SensioLabs\AnsiConverter\Theme\SolarizedTheme; $theme = new SolarizedTheme(); $converter = new AnsiToHtmlConverter($theme);
默认情况下,颜色将内联到HTML中,但您也可以通过关闭样式内联来使用类
$converter = new AnsiToHtmlConverter($theme, false);
主题对象的asCss()
方法允许您检索主题样式作为CSS片段
$styles = $theme->asCss();
然后您可以在HTML文档中使用这些样式
<html> <head> <style> <?php echo $styles ?> .ansi_box { overflow: auto; padding: 10px 15px; font-family: monospace; } </style> </head> <body> <pre class="ansi_color_bg_black ansi_color_fg_white ansi_box"><?php echo $html ?></pre> </body> </html>
Twig集成
注册扩展
use SensioLabs\AnsiConverter\Bridge\Twig\AnsiExtension; $twig->addExtension(AnsiExtension());
可以使用自定义的AnsiToHtmlConverter
use SensioLabs\AnsiConverter\Bridge\Twig\AnsiExtension; use SensioLabs\AnsiConverter\Theme\SolarizedTheme; $theme = new SolarizedTheme(); $converter = new AnsiToHtmlConverter($theme, false); $twig->addExtension(new AnsiExtension($converter));
然后
<html> <head> <style> {# This is only need if the inline styling is disabled #} {{ ansi_css }} </style> </head> <body> {{ some_ansi_code|ansi_to_html }} </body> </html>