首页 > 编程语言 >PHP 使用 ZipArchive 解压避免乱码

PHP 使用 ZipArchive 解压避免乱码

时间:2024-05-31 12:15:41浏览次数:14  
标签:name zip filePath ZipArchive 乱码 mkdFile statInfo path PHP

$filePath: 压缩包路径  ../123.zip
$path:要解压的目录 ../unzip/

public function newUnzip($filePath,$path)
    {
        $zip= new \ZipArchive();
        if($zip->open($filePath) === true) {
            // 创建要解压的目录
            // 获取解压的文件数组
            $fileNum = $zip->numFiles;
            for ($i = 0; $i < $fileNum; $i++) {
                // 处理每一个文件
                $statInfo = $zip->statIndex($i, 64);
                // 获取文件的名称的编码格式
                $info = explode('/', $statInfo['name']);
                foreach ($info as $key => $val) {
                    $encoding = mb_detect_encoding($val, ['UTF-8', 'GBK', 'BIG5', 'CP936']);
                    $info[$key] = iconv($encoding, 'UTF-8//IGNORE', $val);
                }
                $statInfo['name'] = implode('/', $info);
                mkdir($path, 0777, true);
                if (strpos($statInfo['name'], '/') !== false) {
                    $mkdFile = explode('/', $statInfo['name']);
                    if (count($mkdFile) == 1) {
                        $namePath = $mkdFile[0];
                    } else {
                        $namePath = $mkdFile[count($mkdFile) - 1];
                    }
                    //获取zip单个文件数据
                    $fp = fopen('zip://' . $filePath . '#' . $zip->getNameIndex($i), 'rb');
                    $create = true;
                    while (!feof($fp)) {
                        //fread 获取文件数据流 保存到本地
                        file_put_contents($path . DIRECTORY_SEPARATOR . $namePath, fread($fp, 9999999),$create ? 0 : FILE_APPEND);
                        $create = false;
                    }
                } else {
                    if (!copy('zip://' . $filePath . '#' . $zip->getNameIndex($i), $path . '/' . $statInfo['name'])) {
                        return false;
                    }
                }
            }
        }
        $zip->close();
    }
  

  

标签:name,zip,filePath,ZipArchive,乱码,mkdFile,statInfo,path,PHP
From: https://www.cnblogs.com/guoyachao/p/18224228

相关文章

  • php面向对象三(三大特性)
    面向对象的三大特性:封装性、继承性、多态性一、类的封装性将敏感数据保护起来,不被外界访问。类的封装就是将一个功能的方方面面,封装成一个类,例如:数据库工具类,把数据库操作的所有方面全面封装到类中。类的封装性实现,就是通过权限控制符来实现在项目中,所有成员属性,一般都是private、......
  • php面向对象二
    一、访问对象属性和方法的操作在php中,访问对象的属性和方法,使用箭头(->)来访问:$obj->name、$obj>showinfo()<imgsrc="https://pic1.zhimg.com/v2-09034cd631a64d96c402ca53148098f8_b.jpg"data-caption=""data-size="normal"data-rawwidth="1038"da......
  • jmeterQA之Sampler响应结果编码修改(解决乱码问题)
    #问题分析当响应数据或响应页面没有设置编码时,jmeter会按照jmeter.properties文件中,sampleresult.default.encoding设置的格式解析默认ISO-8859-1,单字节解析中文肯定不对,配置片段如下#Theencodingtobeusedifnoneisprovided(defaultISO-8859-1)#sampleresult.def......
  • 编译安装PHP服务(LAMP3)
    目录1.初始化设置,将安装PHP所需软件包传到/opt目录下(1)关闭防火墙(2)上传软件包到/opt目录2.安装GD库和GD库关联程序,用来处理和生成图片3.配置软件模块4.编译及安装5.优化把PHP的可执行程序文件放入路径环境变量的目录中便于系统识别6.复制模版文件作为PHP的主配置文件,......
  • DeerOJ的前端框架介绍-Web文件夹和App文件夹(route.php)
    Web文件夹下的结构DeerOJ的前端框架参考了部分Lavarel框架,做到兼顾代码的可维护性和可阅读性。具体的维护目录文件结构如下:注意到web文件夹下的index.php这是整个前端程序的main程序,当服务段收到请求后,根据.htaccess文件指定使用index.php文件来生成网页,并把网页数......
  • DeerOJ的前端框架介绍-config.php
    config.php文件config.php文件是PHP应用程序的配置文件,具体用于DeerOnlineJudge(DeerOJ)系统的设置。它定义了应用程序的基本信息、数据库连接、Web服务器设置、安全配置、邮件配置、评测机配置以及一些开关设置。基本信息(profile)部分参数解释如下:oj-name:在线......
  • 关于PHP的webshell免杀小结
    0X00普通的一句话木马(适用于CTF和小站)<?phpeval($_POST['a']);?>//函数的相似替换<?phpassert($_POST['a']);?> <?php@eval($_POST['110']);?>与第一个一句话木马相比多了一个"@"字符,我们发现这个字符的含义是在php语法中表示抑制错误信息即使有错误也不返回;属于不......
  • mac系统如何切换php版本
    brewinstallshivammathur/php/[email protected]安装的这个库安装8.1。8.3替换即可#卸载所有PHP版本brewuninstall--ignore-dependenciesphpbrewuninstall--ignore-dependenciesphp@7.4brewuninstall--ignore-dependenciesphp@8.1brewuninstall--ignore-dependen......
  • 使用 Bootstrap 5 无法在 php 文件中实现智能识别
    我使用VisualStudioCode在php文件中使用Bootstrap5。Bootstrap会在我编写HTML代码时向我显示建议,如第一张图片。但当我编写HTML代码时,它什么也不显示,如第二张图片。我尝试使用了许多扩展,并在设置中将php的执行路径和"php":"html"设置为emmet语言。我......
  • 基于php云中仙鹤.鹤类分享网论文
    摘要云中仙鹤鹤类分享网是一个专注于鹤类研究和保护的综合性在线平台。它汇集了大量关于鹤类的专业知识、研究成果、保护动态以及相关的新闻和事件。该网站致力于提供一个全面而详细的信息资源,帮助用户深入了解鹤类的生物学特性、生态习性、分布范围和保护现状。云中仙鹤......