这是一个类似的问题this one https://stackoverflow.com/questions/245121/a-library-to-convert-ansi-escapes-terminal-formatting-color-codes-to-html。我想将 ANSI 转义序列(尤其是颜色转义序列)转换为 HTML。但是,我想使用 PHP 来完成此任务。是否有任何库或示例代码可以执行此操作?如果没有,有什么可以帮助我找到定制解决方案吗?
str_replace 解决方案在颜色“嵌套”的情况下不起作用,因为在 ANSI 颜色代码中,只需重置一次 ESC[0m 即可重置所有属性。在 HTML 中,您需要 SPAN 结束标记的确切数量。
适用于“嵌套”用例的解决方法如下:
// Ugly hack to process the color codes
// We need something like Perl's HTML::FromANSI
// http://search.cpan.org/perldoc?HTML%3A%3AFromANSI
// but for PHP
// http://ansilove.sourceforge.net/ only converts to image :(
// Technique below is from:
// http://stackoverflow.com/questions/1375683/converting-ansi-escape-sequences-to-html-using-php/2233231
$output = preg_replace("/\x1B\[31;40m(.*?)(\x1B\[0m)/", '<span style="color: red">$1</span>$2', $output);
$output = preg_replace("/\x1B\[1m(.*?)(\x1B\[0m)/", '<b>$1</b>$2', $output);
$output = preg_replace("/\x1B\[0m/", '', $output);
(摘自我的 Drush Terminal 问题:http://drupal.org/node/709742 http://drupal.org/node/709742 )
我也在寻找可以轻松完成此操作的 PHP 库。
附:如果要将 ANSI 转义序列转换为 PNG/图像,可以使用AnsiLove http://ansilove.sourceforge.net/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)