<p>
      先下载php_rar.dll文件并让php加载
    </p>
    
    <p>
      <?php<br /> $rar_file=rar_open(&#8220;f:/js/test/z.rar&#8221;) or die(&#8220;失败&#8221;);<br /> $entries=rar_list($rar_file);<br /> foreach($entries as $entry){<br /> $entry->extract(&#8216;f:/js/test&#8217;);<br /> }<br /> rar_close($rar_file);<br /> ?>
    </p>
    
    <p>
      然后创建加密码的rar文件z.rar(加密码时不勾选加密文件名)
    </p>
    
    <p>
      <?php<br /> $rar_file=rar_open(&#8220;f:/js/test/z.rar&#8221;,&#8221;123456&#8243;) or die(&#8220;失败&#8221;);//打开时增加第二个参数,RAR文件的密码<br /> $entries=rar_list($rar_file);<br /> foreach($entries as $entry){<br /> $entry->extract(&#8216;f:/js/test&#8217;);<br /> }<br /> rar_close($rar_file);<br /> ?>
    </p>
    
    <p>
      创建加密码的rar文件z.rar(加密码时勾选加密文件名)用以上代码解压缩失败
    </p>
    
    <p>
      这种方法不好的地方是:解压完后原来的rar文件不能删除(PHP还在使用该文件)
    </p>
    
    <p>
      参考资料
    </p>
    
    <p>
       http://pecl.php.net/package/rar
    </p>
    
    <p>
      http://cn2.php.net/manual/en/book.rar.php
    </p>
    
    <p>
      方法二:调用COM组件
    </p>
    
    <p>
      <?PHP<br /> class rar<br /> {
    </p>
    
    <p>
      public $Path; //文件路径
    </p>
    
    <p>
      public $Save; //保存路径
    </p>
    
    <p>
      public $Object; //Wscript.Shell对象实例
    </p>
    
    <p>
      function rar(){ //构造函数
    </p>
    
    <p>
      $this->Object = new com(&#8220;Wscript.Shell&#8221;); //实例化一个Shell对象
    </p>
    
    <p>
      }
    </p>
    
    <p>
      function Release(){ //解压方法
    </p>
    
    <p>
      $this->Object->run(&#8220;WinRAR x $this->Path $this->Save&#8221;,1,false); //Path要解压的文件名及路径 Save保存路径
    </p>
    
    <p>
         if($this->Object == true){
    </p>
    
    <p>
         return true;
    </p>
    
    <p>
         }else{
    </p>
    
    <p>
         return false;
    </p>
    
    <p>
         }
    </p>
    
    <p>
      }
    </p>
    
    <p>
      function Pressure(){ //压缩方法
    </p>
    
    <p>
      $this->Object->run(&#8220;WinRAR a $this->Save $this->Path&#8221;,1,false); //Save压缩后保存的路径及文件名 Path要压缩的路径
    </p>
    
    <p>
         if($this->Object == true){
    </p>
    
    <p>
         return true;
    </p>
    
    <p>
         }else{
    </p>
    
    <p>
         return false;
    </p>
    
    <p>
         }
    </p>
    
    <p>
      }<br /> }
    </p>
    
    <p>
      $rar=new rar();<br /> $rar->Path=&#8221;F:/js/test/z.rar&#8221;;<br /> $rar->Save=&#8221;F:/js/test&#8221;;<br /> if($rar->Release()){<br /> die(&#8216;解压成功&#8217;);<br /> }else{<br /> die(&#8216;解压失败&#8217;);<br /> }<br /> ?>
    </p>
  </div>
</td>