自己写的一个文件编码批量转换工具(php实现)

2026-05-02 11:34:07 190
分类:php

文件编码批量转换,下面是将GB2312转为UTF-8

//检测文件编码
function detect_encoding($str) {
    $list = array('GB2312','GBK', 'UTF-8');
    foreach ($list as $item) {
        $tmp = mb_convert_encoding($str, $item, $item);
        if (md5($tmp) == md5($str)) {
            return $item;
        }
    }
    return null;
}

//遍历文件夹
function transformFolder($oldDir){
    if (!is_dir($oldDir)) {
        return false;
    }

    $dirHandle = opendir($oldDir);
    while (false !== ($file = readdir($dirHandle))) {
        if ($file == '.' || $file == '..') {
            continue;
        }

        $old=$oldDir.'/'.$file;
        if (!is_dir($old)) {
            $input=$old;
            $ext=get_extension($input);
            //后缀过滤
            if($ext=='php'||$ext=='html'){
                //批量转换编码
                $contents_before = file_get_contents($input);
                if(detect_encoding($contents_before)=='UTF-8'){continue;}
                $contents_after = iconv('GB2312','UTF-8//IGNORE',$contents_before);
                if($contents_after){
                    file_put_contents($input, $contents_after); 
                }
            }
        }
        else{
            transformFolder($old);
        }
    }
    closedir($dirHandle);
    return true;
}

//获取扩展名
function get_extension($file){
    return substr(strrchr($file, '.'), 1);
}