首页 > 电脑专区 > windows >

php中php_rar扩展

来源:互联网 2023-02-20 17:01:45 122

php_rar是针对rar压缩文件提供的php操作扩展,该扩展主要是对rar压缩包的解压,而并没有提供压缩方式WaE办公区 - 实用经验教程分享!

工具/原料

  • 必须实现php的php_rar扩展

在提供示例之前我们先学习一下php_rar常用的函数

  • 1

    打开压缩包函数WaE办公区 - 实用经验教程分享!

    public static RarArchive RarArchive::open ( string $filename [, string $password = NULL [, callable $volume_callback = NULL ]] )WaE办公区 - 实用经验教程分享!

    过程化风格:WaE办公区 - 实用经验教程分享!

    RarArchive rar_open ( string $filename [, string $password = NULL [, callable $volume_callback = NULL ]] )WaE办公区 - 实用经验教程分享!

  • 1该信息未经授权抓取自百度经验
  • 2

    获取压缩包内部文件列表函数WaE办公区 - 实用经验教程分享!

    public array RarArchive::getEntries ( void )WaE办公区 - 实用经验教程分享!

    过程化风格:WaE办公区 - 实用经验教程分享!

    array rar_list ( RarArchive $rarfile )WaE办公区 - 实用经验教程分享!

    php中php_rar扩展WaE办公区 - 实用经验教程分享!

  • 3

    rar压缩包是否损坏和是否为空判断WaE办公区 - 实用经验教程分享!

    public bool RarArchive::isBroken ( void )WaE办公区 - 实用经验教程分享!

    过程化风格:WaE办公区 - 实用经验教程分享!

    bool rar_broken_is ( RarArchive $rarfile )WaE办公区 - 实用经验教程分享!

    通过上面的函数可以判断压缩包是否损坏,下面的函数可以判断出压缩包是否为空WaE办公区 - 实用经验教程分享!

    public bool RarArchive::isSolid ( void )WaE办公区 - 实用经验教程分享!

    过程化风格:WaE办公区 - 实用经验教程分享!

    bool rar_solid_is ( RarArchive $rarfile )WaE办公区 - 实用经验教程分享!

    php中php_rar扩展WaE办公区 - 实用经验教程分享!

  • 4

    如果在压缩包损坏的情况下,还要将压缩包打开那么这需要设置允许打开WaE办公区 - 实用经验教程分享!

    public bool RarArchive::setAllowBroken ( bool $allow_broken )WaE办公区 - 实用经验教程分享!

    过程化风格:WaE办公区 - 实用经验教程分享!

    bool rar_allow_broken_set ( RarArchive $rarfile , bool $allow_broken )WaE办公区 - 实用经验教程分享!

  • 5

    由于我们打开的压缩包是一种资源所以在操作完成后必须将该资源关闭WaE办公区 - 实用经验教程分享!

    public bool RarArchive::close ( void )WaE办公区 - 实用经验教程分享!

    过程化风格:WaE办公区 - 实用经验教程分享!

    bool rar_close ( RarArchive $rarfile )WaE办公区 - 实用经验教程分享!

  • 6

    获取文件最后操作时间WaE办公区 - 实用经验教程分享!

    public string RarEntry::getFileTime ( void )WaE办公区 - 实用经验教程分享!

    php中php_rar扩展WaE办公区 - 实用经验教程分享!

  • 7

    获取RarEntry对象中文件的名称(文件名可能是Unicode/UTF-8的需要进行特殊处理)WaE办公区 - 实用经验教程分享!

    public string RarEntry::getName ( void )WaE办公区 - 实用经验教程分享!

    在我们可以将获取的到字符串转换成utf-8格式的htmlenities对象,然后在通过mb_convert_encoding转换为utf-8的字符串WaE办公区 - 实用经验教程分享!

    php中php_rar扩展WaE办公区 - 实用经验教程分享!

  • 8

    获取压缩包中文件的大小(bytes)WaE办公区 - 实用经验教程分享!

    public int RarEntry::getPackedSize ( void )WaE办公区 - 实用经验教程分享!

    WaE办公区 - 实用经验教程分享!

    public int RarEntry::getUnpackedSize ( void ) 获取条目压缩的大小WaE办公区 - 实用经验教程分享!

    php中php_rar扩展WaE办公区 - 实用经验教程分享!

  • 9

    文件流内容读取,这是一个十分重要的方法,我们获取文件留后可以将文件重新写入到新的文件中WaE办公区 - 实用经验教程分享!

    public resource RarEntry::getStream ([ string $password ] )WaE办公区 - 实用经验教程分享!

    php中php_rar扩展WaE办公区 - 实用经验教程分享!

  • 10

    判断条目是否损坏或者加密WaE办公区 - 实用经验教程分享!

    public bool RarEntry::isDirectory ( void )是否代表目录WaE办公区 - 实用经验教程分享!

    public bool RarEntry::isEncrypted ( void )是否加密WaE办公区 - 实用经验教程分享!

  • rar获取压缩包文件列表

  • 1

    header("content-type:text/html;charset=utf-8");WaE办公区 - 实用经验教程分享!

    $rar = rar_open("Study.rar") or die("打开失败");WaE办公区 - 实用经验教程分享!

    if(rar_broken_is($rar)){//如果损坏的话也允许打开WaE办公区 - 实用经验教程分享!

    rar_allow_broken_set(true);WaE办公区 - 实用经验教程分享!

    }WaE办公区 - 实用经验教程分享!

    if(rar_solid_is($rar)) die("压缩包内容为空");WaE办公区 - 实用经验教程分享!

    $entry_list = rar_list($rar) or die("获取条目失败");WaE办公区 - 实用经验教程分享!

    if($entry_list){WaE办公区 - 实用经验教程分享!

    echo "名称","  ","大小","  ","时间","br/>";WaE办公区 - 实用经验教程分享!

    foreach ($entry_list as $entry) {WaE办公区 - 实用经验教程分享!

    if(!$entry->isDirectory()){//判读是否为目录WaE办公区 - 实用经验教程分享!

    echo entryName($entry->getName()),"  ",$entry->getUnpackedSize(),"&  ",$entry->getFileTime(),'br/>';WaE办公区 - 实用经验教程分享!

    }WaE办公区 - 实用经验教程分享!

    }WaE办公区 - 实用经验教程分享!

    }WaE办公区 - 实用经验教程分享!

    rar_close($rar);WaE办公区 - 实用经验教程分享!

    function entryName($name){WaE办公区 - 实用经验教程分享!

    return mb_convert_encoding(htmlentities($name,ENT_COMPAT,"UTF-8"),"HTML-ENTITIES","UTF-8");WaE办公区 - 实用经验教程分享!

    }WaE办公区 - 实用经验教程分享!

    php中php_rar扩展WaE办公区 - 实用经验教程分享!

  • rar压缩包解压示例

  • 1

    //递归创建目录WaE办公区 - 实用经验教程分享!

    function mkdirs($path){WaE办公区 - 实用经验教程分享!

    return is_dir($path) or mkdirs(dirname($path)) and @mkdir($path,0777);WaE办公区 - 实用经验教程分享!

    }WaE办公区 - 实用经验教程分享!

    function decompression($packrar){WaE办公区 - 实用经验教程分享!

    $basePath = basename($packrar,'.rar');WaE办公区 - 实用经验教程分享!

    $rar = rar_open($packrar) or die("获取资源失败");WaE办公区 - 实用经验教程分享!

    if(rar_broken_is($rar)){//如果损坏的话也允许打开WaE办公区 - 实用经验教程分享!

    rar_allow_broken_set(true);WaE办公区 - 实用经验教程分享!

    }WaE办公区 - 实用经验教程分享!

    if(rar_solid_is($rar)) die("压缩包内容为空");WaE办公区 - 实用经验教程分享!

    $entry_list = rar_list($rar) or die("获取条目失败");WaE办公区 - 实用经验教程分享!

    if($entry_list){WaE办公区 - 实用经验教程分享!

    foreach ($entry_list as $entry) {WaE办公区 - 实用经验教程分享!

    $name = entryName($entry->getName());WaE办公区 - 实用经验教程分享!

    $dir = is_dir($name) ? $dir : dirname($name);//在获取的entry对象中既有文件也要文件夹WaE办公区 - 实用经验教程分享!

    $path= "E:/".$basePath."/".$dir;WaE办公区 - 实用经验教程分享!

    $file = "E:/".$basePath."/".$name;WaE办公区 - 实用经验教程分享!

    WaE办公区 - 实用经验教程分享!

    mkdirs($path);WaE办公区 - 实用经验教程分享!

    WaE办公区 - 实用经验教程分享!

    if(!$entry->isDirectory()){//判读是否为目录WaE办公区 - 实用经验教程分享!

    $stream = $entry->getStream();WaE办公区 - 实用经验教程分享!

    freadEntry($stream,$file);WaE办公区 - 实用经验教程分享!

    fclose($stream);WaE办公区 - 实用经验教程分享!

    }WaE办公区 - 实用经验教程分享!

    }WaE办公区 - 实用经验教程分享!

    }WaE办公区 - 实用经验教程分享!

    rar_close($rar);WaE办公区 - 实用经验教程分享!

    echo "ok";WaE办公区 - 实用经验教程分享!

    }WaE办公区 - 实用经验教程分享!

    function entryName($name){WaE办公区 - 实用经验教程分享!

    return mb_convert_encoding(htmlentities($name,ENT_COMPAT,"UTF-8"),"HTML-ENTITIES","UTF-8");WaE办公区 - 实用经验教程分享!

    }WaE办公区 - 实用经验教程分享!

    /**WaE办公区 - 实用经验教程分享!

    *解压WaE办公区 - 实用经验教程分享!

    */WaE办公区 - 实用经验教程分享!

    function freadEntry($str,$path){WaE办公区 - 实用经验教程分享!

    if($str){WaE办公区 - 实用经验教程分享!

    $fw = fopen($path, "w ");WaE办公区 - 实用经验教程分享!

    while (!feof($str)) {WaE办公区 - 实用经验教程分享!

    $buffer = fread($str, 1024);WaE办公区 - 实用经验教程分享!

    if($buffer){WaE办公区 - 实用经验教程分享!

    fwrite($fw, $buffer);WaE办公区 - 实用经验教程分享!

    }WaE办公区 - 实用经验教程分享!

    }WaE办公区 - 实用经验教程分享!

    fclose($fw);WaE办公区 - 实用经验教程分享!

    }WaE办公区 - 实用经验教程分享!

    }WaE办公区 - 实用经验教程分享!

    decompression("Study.rar");WaE办公区 - 实用经验教程分享!

    php中php_rar扩展WaE办公区 - 实用经验教程分享!

  • 注意事项

    • 在进行rar扩展的时候注意自己的服务器版本
    • rar的扩展函数是有php版本要求

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!WaE办公区 - 实用经验教程分享!


    标签: PHP操作系统扩展

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码