sensiolabs/ansi-to-html

一个将包含ANSI代码的文本转换为HTML的库

v1.2.1 2020-10-06 05:48 UTC

This package is auto-updated.

Last update: 2024-08-29 03:31:22 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>