PHP之Zip扩展,解压缩文件,ZipArchive类,ZipArchive使用手册

远昔 代码记录 2024-01-22 180 0

PHP之Zip扩展,解压缩文件,ZipArchive类,ZipArchive使用手册

<?php
$zip = new ZipArchive();//新建一个对象
$zip->open('demo.zip') //打开一个zip文件
/* 
$zip->open这个方法第一个参数表示处理的zip文件名。 
第二个参数表示处理模式,ZipArchive::OVERWRITE表示如果zip文件存在,
就覆盖掉原来的zip文件。 如果参数使用ZIPARCHIVE::CREATE,
系统就会往原来的zip文件里添加内容。 如果不是为了多次添加内容到zip文件,
建议使用ZipArchive::OVERWRITE。 使用这两个参数,如果zip文件不存在,
系统都会自动新建。 如果对zip文件对象操作成功,$zip->open这个方法会返回TRUE
*/

if ($zip->open('demo.zip')) {

    /* ZipArchive类中的所有属性*/
    echo $zip->status;//Zip Archive 的状态
    echo $zip->statusSys;//Zip Archive 的系统状态
    echo $zip->numFiles;//压缩包里的文件数
    echo $zip->filename;//在文件系统里的压缩包文件名,包含绝对路径
    echo $zip->comment;//压缩包的注释
    ////////////////////////////

    
    /* ZipArchive类中的常用方法*/
    $zip->addEmptyDir('css');//在zip压缩包中建一个空文件夹,成功时返回 TRUE, 或者在失败时返回 FALSE
    $zip->addFile('index.html','in.html');//在zip更目录添加一个文件,并且命名为in.html,第二个参数可以省略
    $zip->addFromString('in.html','hello world');//往zip中一个文件中添加内容
    $zip->extractTo('/tmp/zip/');//解压文件到/tmp/zip/文件夹下面
    $zip->renameName('in.html','index.html');//重新命名zip里面的文件
    $zip->setArchiveComment('Do what you love,Love what you do.');//设置压缩包的注释
    $zip->getArchiveComment();//获取压缩包的注释
    $zip->getFromName('index.html');//获取压缩包文件的内容
    $zip->deleteName('index.html');//删除文件
    $zip->setPassword('123456');//设置压缩包的密码
    $zip->close();//关闭资源句柄
    ////////////////////////////
    
    
 //在zip压缩包中重命名文件夹
$new_name='new_admin/'; //新文件夹,需以/结尾
$name='admin/'; $i=0; //老文件夹
while($item_name = $zip->getNameIndex($i)){
$zip->renameIndex( $i, str_replace($name, $new_name, $item_name ) ); $i++; } unset($i);
    
    
    //在zip压缩包中删除指定文件夹,需以/结尾
    $folder_to_delete = "mulu/";  //文件夹
 for($i=0;$i<$zip->numFiles;$i++){
        $entry_info = $zip->statIndex($i);
        print_r($entry_info); //输出文件位置
if(substr($entry_info["name"],0,strlen($folder_to_delete))==$folder_to_delete){
            $zip->deleteIndex($i);
        } }
    
    
}else{
    echo '文件打开失败';
}

友情提示:如果你修改过zip里文件,建议二次打开压缩包,避免解压或代码运行失败!

$jieya = new ZipArchive();//新建一个对象
$jieya->open('demo.zip')

评论

发表评论:

挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论