最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

php如何转换文件编码

来源:动视网 责编:小采 时间:2020-11-02 18:22:13
文档

php如何转换文件编码

php如何转换文件编码:php转换文件编码的方法:使用函数【str_replace】转换文件编码到新文件夹,代码为【$newPath = str_replace(THIS_PATH, THIS_PATH . DS . Cover, $v)】。php转换文件编码的方法:代码<php define('THIS_FILE'
推荐度:
导读php如何转换文件编码:php转换文件编码的方法:使用函数【str_replace】转换文件编码到新文件夹,代码为【$newPath = str_replace(THIS_PATH, THIS_PATH . DS . Cover, $v)】。php转换文件编码的方法:代码<php define('THIS_FILE'


php转换文件编码的方法:使用函数【str_replace】转换文件编码到新文件夹,代码为【$newPath = str_replace(THIS_PATH, THIS_PATH . DS . Cover, $v)】。

php转换文件编码的方法:

代码

<?php
define('THIS_FILE', __FILE__); // 此文件路径,请勿修改,将跳过此文件
define('THIS_PATH', dirname(THIS_FILE)); // 当前路径,可修改
define('Cover', 'new'); // 是否直接覆盖本文件(改为 true 不加单引号,危险),建议写入其他地址(相对于当前路径)
define('DS', DIRECTORY_SEPARATOR); // Linux改为'/',Windows为''
define('ICONV', 'UTF-8'); // 最终转换编码格式
function eachFile($path, $files = [])
{
 if (Cover !== true && $path == THIS_PATH . DS . Cover) {
 return $files;
 }
 if (preg_match("/[x7f-xff]/", $path)) {
 $path = iconv('UTF-8', 'GBK', $path);
 }
 if (is_file($path)) {
 $files[] = $path;
 return $files;
 }
 $list = scandir($path);
 foreach ($list as $k => $v) {
 if ($v !== '.' && $v !== '..') {
 $p = $path . DS . $v;
 // 路径转码GBK
 if (preg_match("/[x7f-xff]/", $p)) {
 $p = iconv('UTF-8', 'GBK', $p);
 }
 if (is_dir($p)) {
 $files = eachFile($p, $files);
 } else {
 $files[] = $p;
 }
 }
 }
 return $files;
}
$files = eachFile(THIS_PATH);
foreach ($files as $k => $v) {
 $ext = pathinfo($v, PATHINFO_EXTENSION);
 if (in_array($ext, ['txt', 'php', 'css', 'js', 'htm', 'html'])) {
 if ($v == THIS_FILE) continue;
 // 获取内容并转码
 $contents_before = file_get_contents($v);
 $oldIconv = mb_detect_encoding($contents_before, array('ASCII', 'GB2312', 'GBK', 'UTF-8', 'BIG5'));
 $contents_after = iconv($oldIconv, ICONV, $contents_before);
 if (Cover !== true) {
 // 判断新文件夹是否存在
 $newPath = str_replace(THIS_PATH, THIS_PATH . DS . Cover, $v);
 if (!file_exists(dirname($newPath))) {
 mkdir(dirname($newPath), 0755, true);
 }
 // 覆盖写入文件(不存在自动创建)
 file_put_contents($newPath, $contents_after);
 } else {
 file_put_contents($v, $contents_after);
 }
 // 输出
 echo "{$v} 已转换<hr>";
 } else {
 $newPath = str_replace(THIS_PATH, THIS_PATH . DS . Cover, $v);
 if (Cover !== true && !file_exists($newPath)) {
 if (!file_exists(dirname($newPath))) {
 mkdir(dirname($newPath), 0755, true);
 }
 copy($v, $newPath);
 echo "{$v} 复制文件到新路径 {$newPath}<hr>";
 }
 }
}

功能

  • 自定义文件夹

  • 跳过本文件(同一文件夹)及新文件夹(多次转码)

  • 文件格式

  • 转换文件编码到新文件夹(推荐)或本文件

  • 复制无需转码文件到新文件夹

  • 注意

  • 暂未在Linux上测试

  • 只能转码文本文件

  • 相关免费学习推荐:php编程(视频)

    文档

    php如何转换文件编码

    php如何转换文件编码:php转换文件编码的方法:使用函数【str_replace】转换文件编码到新文件夹,代码为【$newPath = str_replace(THIS_PATH, THIS_PATH . DS . Cover, $v)】。php转换文件编码的方法:代码<php define('THIS_FILE'
    推荐度:
    标签: 转换 文件 如何
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top