Minecraft PHP控制台之日志颜色转码(Terminal颜色代码转HTML)
本文发布于 ,内容可能和实际情况存在出入。如果文章存在错误欢迎指正,我会根据情况对文章进行修改或做隐藏处理
最近打算整一个能直接在网页端管理MC服务器的工具
写到显示Log的时候发现MC直接把终端用的颜色代码输出到Log文件里面了
不多说,直接上代码
echo '<pre style="background:#000;color:#fff;width:75%;height:60%;overflow-y:auto;word-wrap:break-word;white-space:pre-wrap;resize:both;">';
$logs = file_get_contents($ServerPath.'logs/latest.log');
$colors = 0;
echo preg_replace_callback("/\e\\[(.*)m/U",function ($str){
global $colors;
if($str[1] == ''){
$return = '';
for($i=0;$i<$colors;$i++){
$return .= '</font>';
}
return $return;
}
$str = explode(';',$str[1]);
$colors++;
switch($str[1]){
case '30':
return '<font color="#000000">';
case '31':
return '<font color="#FF0000">';
case '32':
return '<font color="#00FF00">';
case '33':
return '<font color="#FFFF00">';
case '34':
return '<font color="#0000FF">';
case '35':
return '<font color="#FF00FF">';
case '36':
return '<font color="#00FFFF">';
case '37':
return '<font color="#FFFFFF">';
default:
$colors--;
}
},$logs);
echo '</code></pre>';
因为MC日志基本没有文字效果和背景,就只转了前景色
一开始差点被\e坑死,浏览器显示的是左箭头,我就直接在正则里打了个左箭头……
效果图:
multicraft
懒得装了,感觉自己写一个更适合自己的需求
果然是dalao,说话都透露出dalao风范(´∀`)