有时候, 需要对某个文件夹中的文件进行编码转换. 不过文件过多, 懒得一个一个地去转换. 所以就用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);
}
}
}
除非注明,干草博客文章均为原创,转载请以链接形式标明本文地址
