php批量转换文件夹下所有文件编码的函数类
分享一个PHP类,用于转换文件夹下所有文件的编码格式。特别适用于网站的多语言版本发布,例如当你拥有一个GBK版本并希望制作一个UTF-8版本时,或者当你拥有GBK源码并打算进行二次开发但不想改变IDE的编码方式时,你可以使用此程序批量转换文件编码。
函数类代码如下:
```php
// 转换文件夹下的所有文件编码,只能执行一次转换,避免多次转换导致乱码
function iconv_file($filename, $input_encoding='gbk', $output_encoding='utf-8') {
if (file_exists($filename)) {
if (is_dir($filename)) {
// 如果是目录,则递归处理目录下的所有文件
foreach (glob("$filename/") as $key => $value) {
iconv_file($value); // 递归调用,转换子文件或子目录
}
} else {
// 如果是文件,则进行编码转换
$contents_before = file_get_contents($filename); // 读取文件内容
// 检测文件内容编码,但这里需要注意,mb_detect_encoding函数可能无法准确检测所有文件的编码
$encoding = mb_detect_encoding($contents_before, array('CP936', 'ASCII', 'GBK', 'GB2312', 'UTF-8'));
if ($encoding == 'UTF-8') {
// 如果文件已经是UTF-8编码,则不需要转换
return;
}
$contents_after = iconv($input_encoding, $output_encoding, $contents_before); // 转换编码
file_put_contents($filename, $contents_after); // 写入转换后的内容到文件
}
} else {
echo '参数错误'; // 文件不存在时的提示信息
return false;
}
}
// 使用示例:转换指定文件夹下的所有文件编码
iconv_file('./test'); // 传入要转换的文件夹路径
?>
```
请注意,此函数只能对文件夹中的文件进行一次性编码转换。多次调用该函数可能会再次转换已经处理过的文件,导致乱码。确保只在需要的时候调用此函数一次。由于编码检测的复杂性,mb_detect_encoding函数可能无法准确识别所有文件的编码,使用时请谨慎。使用示例中的`iconv_file('./test')`将转换名为`test`的文件夹下的所有文件编码。
编程语言
- php批量转换文件夹下所有文件编码的函数类
- 微信小程序实现用table显示数据库反馈的多条数据
- FileStreaReder和StreamReader两个类介绍
- 伪静态下不能使用FCKeditor的解决方法
- 利用PHP生成CSV文件简单示例
- 常见的正则表达式问题
- PHP getNamespaces()函数讲解
- jQuery实现html双向绑定功能示例
- 矩形相交以及求出相交的区域的原理解析
- ASP.NET The system cannot find the file specified解决办法
- javascript嵌套函数和在函数内调用外部函数的区别
- PDO--lastInsertId讲解
- JavaScript基于ajax编辑信息用法实例
- 浅谈js对象属性 通过点(.) 和方括号([]) 的不同之
- SQl 跨服务器查询语句
- jQuery使用hide方法隐藏指定元素class样式用法实例