BILIBIBI

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坑死,浏览器显示的是左箭头,我就直接在正则里打了个左箭头……

效果图:
QQ图片20170604163338.jpg

标签: none

已有 3 条评论

  1. multicraft

    1. 懒得装了,感觉自己写一个更适合自己的需求

  2. 果然是dalao,说话都透露出dalao风范(´∀`)

添加新评论