使用PHP批量转码

分享到:

有时候, 需要对某个文件夹中的文件进行编码转换. 不过文件过多, 懒得一个一个地去转换. 所以就用PHP写佐一个简单的批量把文件的编码由UTF-8转换成GBK的小程序.

不过, 考虑到由于文件夹太大. 如果直接使用http形式去执行PHP的话, 可能会出现超时的情况. 所以就改成bat批处理文档的形式去执行PHP了.

要使用批处理执行PHP程序.

要知道如何使用批处理去执行一个PHP文件, 可以参考http://www.tmper.com/blog/php-bat/

以下部分为实现转换编码的核心程序, 注: 此处贴出的代码, 不能直接copy执行. 只提供算法参考.

读取文件夹中的文件到数组中的函数为:

function & dir2arr($dir, $unread=array()){
    $result[$dir] = array();
    $resource = opendir($dir);
    while($file = readdir($resource)){
        if(!empty($unread)){
            if(in_array($file, $unread)){
                continue;
           }
       }
       if($file <> '..' && $file <> '.'){
           is_dir($dir.DS.$file)
           ? $result = array_merge($result, $this->dir2arr($dir.DS.$file))
           : $result[$dir][] = $dir.DS.$file;
       }
    }
    return $result;
}

这种方法使用了递归.

正式转换编码的函数为:

function utf2gbk() {
    $this->Object->Docpro = Import::docpro();
    $dir = 'E:\Webroot\ahei\docs'; //此处定义你要转码的那个文件夹路径
    $list = $this->Object->Docpro->dir2arr($dir);
    foreach($list as $files) {
        foreach($files as $file) {
            $con = file_get_contents($file);
            $con = iconv('utf-8', 'gbk', $con);
            file_put_contents($file, $con);
            Basic::cmd($file);
        }
    }
}

除非注明,干草博客文章均为原创,转载请以链接形式标明本文地址

本文地址:http://www.tmper.com/blog/php-utf8-gbk/