ANSI颜色码转HTML

此方法是一字一字往下抓ANSI颜色码转换,有点土法炼钢。当前和大部分TELNET软件
比较不同是他们换行就有自动作退出码,而我这个并没有作。

 

<?
Echo "<body bgcolor=000000><PRE Style='font-family:cvga;font-size:18px;color:C6C7C6;'>";
Echo ANSI_2_HTML(Fread(Fopen("1.txt","r"),FileSize("1.txt")));
Echo "</pre>";
## ANSI 转换成 HTML
Function ANSI_2_HTML($String){

   $ANSI_Light=Array("0"=>"000000","1"=>"#FF0000","2"=>"#00CC00","3"=>"#FFFF00","4"=>"#3366FF","5"=>"#CC33CC","6"=>"#66FFFF","7"=>"#FFFFFF");
   $ANSI_Dark =Array("0"=>"000000","1"=>"#840000","2"=>"#008200","3"=>"#AD4100","4"=>"#000084","5"=>"#840084","6"=>"#00B6B5","7"=>"#C6C7C6");
   
   ## 颜色样本同CNEWS      

   $flag_have_ansi= 0;
   $dl            = 0;         
   $flag_hava_bg  = 0;

   $String=Str_replace(Chr(27).'[m',Chr(27).'[0m',$String);
   
   For($i=0;$i<Strlen($String);$i++):
      If($String[$i]==Chr(27)):
         $lastString=Substr($String,$i,Strlen($String)-$i);         
         If(Ereg(Chr(27)."\[([0-8;]{0,}[^m])m",$lastString)):
            $ansicode=Substr($lastString,2,Strpos($lastString,'m')-2);
            $i=$i+Strpos($lastString,'m');
            $Rendition=Split(";",$ansicode);
            If(Is_Array($Rendition)) Sort($Rendition);
            For($j=0;$j<=count($Rendition)-1;$j++):
               $Rendition[$j]=(int)$Rendition[$j];
               If($Rendition[$j]=='1') $dl=1;
               If($Rendition[$j]=='0') $dl=0;
               
               $ansi=($dl=='0') ? $ANSI_Dark : $ANSI_Light;

               If($Rendition[$j]<10):
                  If($Rendition[$j]==0) :
                     $style="background-color:#000000;text-decoration:none;";
                     $tempBg="";
                  EndIf;
                  If($Rendition[$j]==1) 
                     $style="color:#ffffff;";
                  If($Rendition[$j]==4) 
                     $style=$style."text-decoration:underline;";            
                  # 5 blink on
                  # 7 reverse video on
                  # 8 nondisplayed (invisible) 缺 不知道如何实作显示,但大部分后三者用不到
               EndIf;               
               If($Rendition[$j]>=30&&$Rendition[$j]<=37):
                  $style=$style."color:".$ansi[$Rendition[$j]%10].";";
                  $style=$style.$tempBg;
               EndIf;
               If($Rendition[$j]>=40):               
                  $flag_hava_bg = 1;
                  $style=$style."background-color:".$ANSI_Dark[$Rendition[$j]%10].";";                  
                  $tempBg="background-color:".$ANSI_Dark[$Rendition[$j]%10].";";
               EndIf;
            EndFor;
            
            If($flag_have_ansi==1):
               $font="</span><span style=$style>";
            ElseIf($flag_have_ansi==0):
               $flag_hava_bg = 0;
               $tempBg       ="";
               $font="<span style=$style>";
            EndIf;
            $flag_have_ansi=1;
            $myansi.=$font;   
         EndIf;
      Else:
         $myansi.=$String[$i];
      EndIf;
   EndFor;
   Return "</span>".$myansi;   
}

下图为TELNET软件浏览

下图为浏览器浏览

时间: 2025-01-20 17:45:19

ANSI颜色码转HTML的相关文章

WPF中将16进制颜色码转换成SolidColorBrush

原文:WPF中将16进制颜色码转换成SolidColorBrush 使用ColorConverter.ConvertFromString(string colorValue)方法 例如:new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFD3CFC7"));

HTML语法详细介绍

语法  <! - - ... - -> 批注   <!> 跑马灯   <marquee>...</marquee>普通卷动  <marquee behavior=slide>...</marquee>滑动  <marquee behavior=scroll>...</marquee>预设卷动  <marquee behavior=alternate>...</marquee>来回卷动  

如何将 CSS 加入网页

css|网页 您可以利用下列 3 种方式,将 CSS 指定的格调加诸于网页上: 1. 在 HTML 档案里加一个超连结,连到外在的 CSS 档 这个方法最方便管理整个网站的网页风貌.它让网页的文字内容与版面设计分开.您只要在一个 CSS 档内(副档名为 .CSS)定义好网页的外观风格,所有参考连结到此 CSS 档的网页,便会依照指示,反应出定义好的风格. 它的写法是: <HTML><HEAD><TITLE>本页标题</TITLE><LINK REL=&

HTML语法大全

卷标 , 属性名称 , 简介 <! - - ... - -> 批注 <!> 跑马灯 <marquee>...</marquee>普通卷动 <marquee behavior=slide>...</marquee>滑动 <marquee behavior=scroll>...</marquee>预设卷动 <marquee behavior=alternate>...</marquee>来回

HTML 4.0 语法表格标签

 [网页中的表格观念] 举个例子来说,如果今天我们要做一个3栏2列的表格,在WORD中,只要设定表格为3栏.2列就完成了,不过,在网页中做一个3栏2列的表格,可是要分成好几个步骤的,第一个步骤,利用<TABLE></TABLE>标签告诉电脑我要做一个表格:第二个步骤,利用一组<TR></TR>标签先做一个横列,然后在横列中利用三组<TD></TD>标签再分出三栏:第三个步骤,重复第二个步骤,再做一横列然后再分三栏,如此才能得到一个3栏

HTML文本标签如何使用

1.<pre></pre> 2.<h1></h1>--<h6></h6> 3.<b></b><i></i><u></u> 4.<tt></tt><cite></cite><em></em><strong></strong> 5.<font></font

HTML表格标签如何使用

    意大利 英格兰 西班牙 AC米兰 佛罗伦萨 曼联 纽卡斯尔 巴塞罗那 皇家社会 尤文图斯 桑普多利亚 利物浦 阿申纳 皇家马德里 -- 拉齐奥 国际米兰 切尔西 米德尔斯堡 马德里竞技 --     1.<table></table> 2.<tr></tr><td></td> 3.<th></th> 表格标签对于制作网页是很重要的,我希望您能记住这一点,现在很多很多网页都是使用多重表格,主 要是因为表格

Flash实例教程:简单的图片切换特效动画

  1.打开FLASH,版本8.0以上都可,新建文件,大小自定,我这里默认550*400,导入几张图片到库里.图层1上拖张图片1,匹配舞台大小,水平.垂直中齐.加锁. 2.添加图层2,在第一帧上再拖张图片2,水平.垂直中齐,右键--转换为影片剪辑,名为"转换1".双击进入编辑区,将图层1延长至125帧(长短可自定),加锁.添加图层2,在图层2第一帧上,选择"矩形工具",关闭笔触色,关闭"对象绘制"和"紧贴至对象",颜色码CDC

Web设计师应遵循的高效设计原则

主要针对酒店行业和联邦政府进行Web开发的Ryan Boudreaux针对四大设计原则写了一系列文章,本文为第一篇<Effective design principles for web designers: Contrast>的译文,内容如下: 如果你接受过设计方面的正规课程,你可能已经了解了高效设计原则,它包括四个著名的标准概念:对比(Contrast).重复(Repetition).对齐(Alignment)和亲密性(Proximity).很多人简称为PARC或CRAP.这四个设计原则是