此方法是一字一字往下抓ANSI颜色码转换,有点土法炼钢。当前和大部分TELNET软件
比较不同是他们换行就有自动作退出码,而我这个并没有作。
<code><font color="#000000"><font color="#0000bb"></font><font face="新宋体"><font color="#007700"><br>Echo </font><font color="#dd0000">"<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">"</pre><div class="contentsignin">Salin selepas log masuk</div></div></font></font><font face="新宋体"><font color="#007700">;<br>Echo </font><font color="#0000bb">ANSI_2_HTML</font><font color="#007700">(</font><font color="#0000bb">Fread</font><font color="#007700">(</font><font color="#0000bb">Fopen</font><font color="#007700">(</font><font color="#dd0000">"1.txt"</font><font color="#007700">,</font><font color="#dd0000">"r"</font><font color="#007700">),</font><font color="#0000bb">FileSize</font><font color="#007700">(</font><font color="#dd0000">"1.txt"</font></font><font face="新宋体"><font color="#007700">)));<br>Echo </font><font color="#dd0000">""</font></font><font face="新宋体" color="#007700">;<br></font><font face="新宋体"><font color="#ff8000">## ANSI 转换成 HTML<br></font><font color="#007700">Function </font><font color="#0000bb">ANSI_2_HTML</font><font color="#007700">(</font><font color="#0000bb">$String</font></font><font face="新宋体"><font color="#007700">){<br><br> </font><font color="#0000bb">$ANSI_Light</font><font color="#007700">=Array(</font><font color="#dd0000">"0"</font><font color="#007700">=></font><font color="#dd0000">"000000"</font><font color="#007700">,</font><font color="#dd0000">"1"</font><font color="#007700">=></font><font color="#dd0000">"#FF0000"</font><font color="#007700">,</font><font color="#dd0000">"2"</font><font color="#007700">=></font><font color="#dd0000">"#00CC00"</font><font color="#007700">,</font><font color="#dd0000">"3"</font><font color="#007700">=></font><font color="#dd0000">"#FFFF00"</font><font color="#007700">,</font><font color="#dd0000">"4"</font><font color="#007700">=></font><font color="#dd0000">"#3366FF"</font><font color="#007700">,</font><font color="#dd0000">"5"</font><font color="#007700">=></font><font color="#dd0000">"#CC33CC"</font><font color="#007700">,</font><font color="#dd0000">"6"</font><font color="#007700">=></font><font color="#dd0000">"#66FFFF"</font><font color="#007700">,</font><font color="#dd0000">"7"</font><font color="#007700">=></font><font color="#dd0000">"#FFFFFF"</font></font><font face="新宋体"><font color="#007700">);<br> </font><font color="#0000bb">$ANSI_Dark </font><font color="#007700">=Array(</font><font color="#dd0000">"0"</font><font color="#007700">=></font><font color="#dd0000">"000000"</font><font color="#007700">,</font><font color="#dd0000">"1"</font><font color="#007700">=></font><font color="#dd0000">"#840000"</font><font color="#007700">,</font><font color="#dd0000">"2"</font><font color="#007700">=></font><font color="#dd0000">"#008200"</font><font color="#007700">,</font><font color="#dd0000">"3"</font><font color="#007700">=></font><font color="#dd0000">"#AD4100"</font><font color="#007700">,</font><font color="#dd0000">"4"</font><font color="#007700">=></font><font color="#dd0000">"#000084"</font><font color="#007700">,</font><font color="#dd0000">"5"</font><font color="#007700">=></font><font color="#dd0000">"#840084"</font><font color="#007700">,</font><font color="#dd0000">"6"</font><font color="#007700">=></font><font color="#dd0000">"#00B6B5"</font><font color="#007700">,</font><font color="#dd0000">"7"</font><font color="#007700">=></font><font color="#dd0000">"#C6C7C6"</font></font><font face="新宋体" color="#007700">);<br> <br> </font><font face="新宋体"><font color="#ff8000">## 颜色样本同CNEWS <br><br> </font><font color="#0000bb">$flag_have_ansi</font><font color="#007700">= </font><font color="#0000bb">0</font></font><font face="新宋体"><font color="#007700">;<br> </font><font color="#0000bb">$dl </font><font color="#007700">= </font><font color="#0000bb">0</font></font><font face="新宋体"><font color="#007700">; <br> </font><font color="#0000bb">$flag_hava_bg </font><font color="#007700">= </font><font color="#0000bb">0</font></font><font face="新宋体"><font color="#007700">;<br><br> </font><font color="#0000bb">$String</font><font color="#007700">=</font><font color="#0000bb">Str_replace</font><font color="#007700">(</font><font color="#0000bb">Chr</font><font color="#007700">(</font><font color="#0000bb">27</font><font color="#007700">).</font><font color="#dd0000">'[m'</font><font color="#007700">,</font><font color="#0000bb">Chr</font><font color="#007700">(</font><font color="#0000bb">27</font><font color="#007700">).</font><font color="#dd0000">'[0m'</font><font color="#007700">,</font><font color="#0000bb">$String</font></font><font face="新宋体"><font color="#007700">);<br> <br> For(</font><font color="#0000bb">$i</font><font color="#007700">=</font><font color="#0000bb">0</font><font color="#007700">;</font><font color="#0000bb">$i</font><font color="#007700"><font color="#0000bb">Strlen</font><font color="#007700">(</font><font color="#0000bb">$String</font><font color="#007700">);</font><font color="#0000bb">$i</font></font><font face="新宋体"><font color="#007700">++):<br> If(</font><font color="#0000bb">$String</font><font color="#007700">[</font><font color="#0000bb">$i</font><font color="#007700">]==</font><font color="#0000bb">Chr</font><font color="#007700">(</font><font color="#0000bb">27</font></font><font face="新宋体"><font color="#007700">)):<br> </font><font color="#0000bb">$lastString</font><font color="#007700">=</font><font color="#0000bb">Substr</font><font color="#007700">(</font><font color="#0000bb">$String</font><font color="#007700">,</font><font color="#0000bb">$i</font><font color="#007700">,</font><font color="#0000bb">Strlen</font><font color="#007700">(</font><font color="#0000bb">$String</font><font color="#007700">)-</font><font color="#0000bb">$i</font></font><font face="新宋体"><font color="#007700">); <br> If(</font><font color="#0000bb">Ereg</font><font color="#007700">(</font><font color="#0000bb">Chr</font><font color="#007700">(</font><font color="#0000bb">27</font><font color="#007700">).</font><font color="#dd0000">"\[([0-8;]{0,}[^m])m"</font><font color="#007700">,</font><font color="#0000bb">$lastString</font></font><font face="新宋体"><font color="#007700">)):<br> </font><font color="#0000bb">$ansicode</font><font color="#007700">=</font><font color="#0000bb">Substr</font><font color="#007700">(</font><font color="#0000bb">$lastString</font><font color="#007700">,</font><font color="#0000bb">2</font><font color="#007700">,</font><font color="#0000bb">Strpos</font><font color="#007700">(</font><font color="#0000bb">$lastString</font><font color="#007700">,</font><font color="#dd0000">'m'</font><font color="#007700">)-</font><font color="#0000bb">2</font></font><font face="新宋体"><font color="#007700">);<br> </font><font color="#0000bb">$i</font><font color="#007700">=</font><font color="#0000bb">$i</font><font color="#007700">+</font><font color="#0000bb">Strpos</font><font color="#007700">(</font><font color="#0000bb">$lastString</font><font color="#007700">,</font><font color="#dd0000">'m'</font></font><font face="新宋体"><font color="#007700">);<br> </font><font color="#0000bb">$Rendition</font><font color="#007700">=</font><font color="#0000bb">Split</font><font color="#007700">(</font><font color="#dd0000">";"</font><font color="#007700">,</font><font color="#0000bb">$ansicode</font></font><font face="新宋体"><font color="#007700">);<br> If(</font><font color="#0000bb">Is_Array</font><font color="#007700">(</font><font color="#0000bb">$Rendition</font><font color="#007700">)) </font><font color="#0000bb">Sort</font><font color="#007700">(</font><font color="#0000bb">$Rendition</font></font><font face="新宋体"><font color="#007700">);<br> For(</font><font color="#0000bb">$j</font><font color="#007700">=</font><font color="#0000bb">0</font><font color="#007700">;</font><font color="#0000bb">$j</font><font color="#007700"><font color="#0000bb">count</font><font color="#007700">(</font><font color="#0000bb">$Rendition</font><font color="#007700">)-</font><font color="#0000bb">1</font><font color="#007700">;</font><font color="#0000bb">$j</font></font><font face="新宋体"><font color="#007700">++):<br> </font><font color="#0000bb">$Rendition</font><font color="#007700">[</font><font color="#0000bb">$j</font><font color="#007700">]=(int)</font><font color="#0000bb">$Rendition</font><font color="#007700">[</font><font color="#0000bb">$j</font></font><font face="新宋体"><font color="#007700">];<br> If(</font><font color="#0000bb">$Rendition</font><font color="#007700">[</font><font color="#0000bb">$j</font><font color="#007700">]==</font><font color="#dd0000">'1'</font><font color="#007700">) </font><font color="#0000bb">$dl</font><font color="#007700">=</font><font color="#0000bb">1</font></font><font face="新宋体"><font color="#007700">;<br> If(</font><font color="#0000bb">$Rendition</font><font color="#007700">[</font><font color="#0000bb">$j</font><font color="#007700">]==</font><font color="#dd0000">'0'</font><font color="#007700">) </font><font color="#0000bb">$dl</font><font color="#007700">=</font><font color="#0000bb">0</font></font><font face="新宋体"><font color="#007700">;<br> <br> </font><font color="#0000bb">$ansi</font><font color="#007700">=(</font><font color="#0000bb">$dl</font><font color="#007700">==</font><font color="#dd0000">'0'</font><font color="#007700">) ? </font><font color="#0000bb">$ANSI_Dark </font><font color="#007700">: </font><font color="#0000bb">$ANSI_Light</font></font><font face="新宋体"><font color="#007700">;<br><br> If(</font><font color="#0000bb">$Rendition</font><font color="#007700">[</font><font color="#0000bb">$j</font><font color="#007700">]<font color="#0000bb">10</font></font><font face="新宋体"><font color="#007700">):<br> If(</font><font color="#0000bb">$Rendition</font><font color="#007700">[</font><font color="#0000bb">$j</font><font color="#007700">]==</font><font color="#0000bb">0</font></font><font face="新宋体"><font color="#007700">) :<br> </font><font color="#0000bb">$style</font><font color="#007700">=</font><font color="#dd0000">"background-color:#000000;text-decoration:none;"</font></font><font face="新宋体"><font color="#007700">;<br> </font><font color="#0000bb">$tempBg</font><font color="#007700">=</font><font color="#dd0000">""</font></font><font face="新宋体"><font color="#007700">;<br> EndIf;<br> If(</font><font color="#0000bb">$Rendition</font><font color="#007700">[</font><font color="#0000bb">$j</font><font color="#007700">]==</font><font color="#0000bb">1</font></font><font face="新宋体"><font color="#007700">) <br> </font><font color="#0000bb">$style</font><font color="#007700">=</font><font color="#dd0000">"color:#ffffff;"</font></font><font face="新宋体"><font color="#007700">;<br> If(</font><font color="#0000bb">$Rendition</font><font color="#007700">[</font><font color="#0000bb">$j</font><font color="#007700">]==</font><font color="#0000bb">4</font></font><font face="新宋体"><font color="#007700">) <br> </font><font color="#0000bb">$style</font><font color="#007700">=</font><font color="#0000bb">$style</font><font color="#007700">.</font><font color="#dd0000">"text-decoration:underline;"</font></font><font face="新宋体" color="#007700">; <br> </font><font face="新宋体" color="#ff8000"># 5 blink on<br> # 7 reverse video on<br> # 8 nondisplayed (invisible) 缺 不知道如何实作显示,但大部分后三者用不到<br> </font><font face="新宋体"><font color="#007700">EndIf; <br> If(</font><font color="#0000bb">$Rendition</font><font color="#007700">[</font><font color="#0000bb">$j</font><font color="#007700">]>=</font><font color="#0000bb">30</font><font color="#007700">&&</font><font color="#0000bb">$Rendition</font><font color="#007700">[</font><font color="#0000bb">$j</font><font color="#007700">]<font color="#0000bb">37</font></font><font face="新宋体"><font color="#007700">):<br> </font><font color="#0000bb">$style</font><font color="#007700">=</font><font color="#0000bb">$style</font><font color="#007700">.</font><font color="#dd0000">"color:"</font><font color="#007700">.</font><font color="#0000bb">$ansi</font><font color="#007700">[</font><font color="#0000bb">$Rendition</font><font color="#007700">[</font><font color="#0000bb">$j</font><font color="#007700">]%</font><font color="#0000bb">10</font><font color="#007700">].</font><font color="#dd0000">";"</font></font><font face="新宋体"><font color="#007700">;<br> </font><font color="#0000bb">$style</font><font color="#007700">=</font><font color="#0000bb">$style</font><font color="#007700">.</font><font color="#0000bb">$tempBg</font></font><font face="新宋体"><font color="#007700">;<br> EndIf;<br> If(</font><font color="#0000bb">$Rendition</font><font color="#007700">[</font><font color="#0000bb">$j</font><font color="#007700">]>=</font><font color="#0000bb">40</font></font><font face="新宋体"><font color="#007700">): <br> </font><font color="#0000bb">$flag_hava_bg </font><font color="#007700">= </font><font color="#0000bb">1</font></font><font face="新宋体"><font color="#007700">;<br> </font><font color="#0000bb">$style</font><font color="#007700">=</font><font color="#0000bb">$style</font><font color="#007700">.</font><font color="#dd0000">"background-color:"</font><font color="#007700">.</font><font color="#0000bb">$ANSI_Dark</font><font color="#007700">[</font><font color="#0000bb">$Rendition</font><font color="#007700">[</font><font color="#0000bb">$j</font><font color="#007700">]%</font><font color="#0000bb">10</font><font color="#007700">].</font><font color="#dd0000">";"</font></font><font face="新宋体"><font color="#007700">; <br> </font><font color="#0000bb">$tempBg</font><font color="#007700">=</font><font color="#dd0000">"background-color:"</font><font color="#007700">.</font><font color="#0000bb">$ANSI_Dark</font><font color="#007700">[</font><font color="#0000bb">$Rendition</font><font color="#007700">[</font><font color="#0000bb">$j</font><font color="#007700">]%</font><font color="#0000bb">10</font><font color="#007700">].</font><font color="#dd0000">";"</font></font><font face="新宋体"><font color="#007700">;<br> EndIf;<br> EndFor;<br> <br> If(</font><font color="#0000bb">$flag_have_ansi</font><font color="#007700">==</font><font color="#0000bb">1</font></font><font face="新宋体"><font color="#007700">):<br> </font><font color="#0000bb">$font</font><font color="#007700">=</font><font color="#dd0000">"<span>"</span></font></font><font face="新宋体"><font color="#007700">;<br> ElseIf(</font><font color="#0000bb">$flag_have_ansi</font><font color="#007700">==</font><font color="#0000bb">0</font></font><font face="新宋体"><font color="#007700">):<br> </font><font color="#0000bb">$flag_hava_bg </font><font color="#007700">= </font><font color="#0000bb">0</font></font><font face="新宋体"><font color="#007700">;<br> </font><font color="#0000bb">$tempBg </font><font color="#007700">=</font><font color="#dd0000">""</font></font><font face="新宋体"><font color="#007700">;<br> </font><font color="#0000bb">$font</font><font color="#007700">=</font><font color="#dd0000">"<span>"</span></font></font><font face="新宋体"><font color="#007700">;<br> EndIf;<br> </font><font color="#0000bb">$flag_have_ansi</font><font color="#007700">=</font><font color="#0000bb">1</font></font><font face="新宋体"><font color="#007700">;<br> </font><font color="#0000bb">$myansi</font><font color="#007700">.=</font><font color="#0000bb">$font</font></font><font face="新宋体"><font color="#007700">; <br> EndIf;<br> Else:<br> </font><font color="#0000bb">$myansi</font><font color="#007700">.=</font><font color="#0000bb">$String</font><font color="#007700">[</font><font color="#0000bb">$i</font></font><font face="新宋体"><font color="#007700">];<br> EndIf;<br> EndFor;<br> Return </font><font color="#dd0000">""</font><font color="#007700">.</font><font color="#0000bb">$myansi</font></font><font face="新宋体" color="#007700">; <br>}</font><font color="#0000bb"></font></font></font></font></font></font> |