ANSI renk kodları, bir ESC [0m sıfırlama tüm bu tüm özelliklerini sıfırlamak için gereken, çünkü str_replace çözüm, renkler "iç içe" olduğu durumlarda işe yaramaz. HTML yaparken, SPAN kapanış etiketleri tam sayı gerekir.
"Iç içe" kullanım durumunda çalışan bir geçici çözüm aşağıdaki gibidir:
// 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);
(Burada benim drush Terminal sorunu alınmıştır: http://drupal.org/node/709742)
Ben de kolayca yapmak için PHP kitaplığı için arıyorum.
P.S. PNG / görüntü ANSI kaçış dizilerini dönüştürmek istiyorsanız, kullanabileceğiniz AnsiLove.