【php开源代码栏目提醒】:以下是网学会员为您推荐的php开源代码-unzip.lib.php,希望本篇文章对您学习有所帮助。
<?PHP
/* $Id: unzip.lib.php,v 1.2 2006/01/17 17:02:31 cybot_tm Exp $ */
/**
* ZIP file unpack classes. Contributed to the phpMyAdmin project.
*
* @category phpPublic
* @package File-Formats-ZIP
* @subpackage Unzip
* @filesource unzip.lib.php
* @version 1.0.1
*
* @author Holger Boskugel <vbwebprofi@gmx.de>
* @copyright Copyright 漏 2003, Holger Boskugel, Berlin, Germany
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
* @history
* 2003-12-02 - HB : Patched : naming bug : Time/Size of file
* Added : ZIP file comment
* Added : Check BZIP2 support of PHP
* 2003-11-29 - HB * Initial version
*/
/**
* Unzip class, which retrieves entries from ZIP files.
*
* Supports only the compression modes
* - 0 : Stored,
* - 8 : Deflated and
* - 12 : BZIP2
*
* Based on :<BR>
* <BR>
* {@link http://www.pkware.com/products/enterprise/white_papers/appnote.html
* * Official ZIP file format}<BR>
* {@link http://msdn.microsoft.com/library/en-us/w98ddk/hh/w98ddk/storage_5l4m.asp
* * Microsoft DOS date/time format}
*
* @category phpPublic
* @package File-Formats-ZIP
* @subpackage Unzip
* @version 1.0.1
* @author Holger Boskugel <vbwebprofi@gmx.de>
* @uses SimpleUnzipEntry
* @example example.unzip.php Two examples
*/
class SimpleUnzip {
// 2003-12-02 - HB >
/**
* Array to store file entries
*
* @var string
* @access public
* @see ReadFile()
* @since 1.0.1
*/
var $Comment = '';
// 2003-12-02 - HB <
/**
* Array to store file entries
*
* @var array
* @access public
* @see ReadFile()
* @since 1.0
*/
var $Entries = array();
/**
* Name of the ZIP file
*
* @var string
* @access public
* @see ReadFile()
* @since 1.0
*/
var $Name = '';
/**
* Size of the ZIP file
*
* @var integer
* @access public
* @see ReadFile()
* @since 1.0
*/
var $Size = 0;
/**
* Time of the ZIP file (unix timestamp)
*
* @var integer
* @access public
* @see ReadFile()
* @since 1.0
*/
var $Time = 0;
/**
* Contructor of the class
*
* @param string File name
* @return SimpleUnzip Instanced class
* @access public
* @uses SimpleUnzip::ReadFile() Opens file on new if specified
* @since 1.0
*/
function SimpleUnzip($in_FileName = '')
{
if ($in_FileName !== '') {
SimpleUnzip::ReadFile($in_FileName);
}
} // end of the 'SimpleUnzip' constructor
/**
* Counts the entries
*
* @return integer Count of ZIP entries
* @access public
* @uses $Entries
* @since 1.0
*/
function Count()
{
return count($this->Entries);
} // end of the 'Count()' method
/**
* Gets data of the specified ZIP entry
*
* @param integer Index of the ZIP entry
* @return mixed Data for the ZIP entry
* @uses SimpleUnzipEntry::$Data
* @access public
* @since 1.0
*/
function GetData($in_Index)
{
return $this->Entries[$in_Index]->Data;
} // end of the 'GetData()' method
/**
* Gets an entry of the ZIP file
*
* @param integer Index of the ZIP entry
* @return SimpleUnzipEntry Entry of the ZIP file
* @uses $Entries
* @access public
* @since 1.0
*/
function GetEntry($in_Index)
{
return $this->Entries[$in_Index];
} // end of the 'GetEntry()' method
/**
* Gets error code for the specified ZIP entry
*
* @param integer Index of the ZIP entry
* @return integer Error code for the ZIP entry
* @uses SimpleUnzipEntry::$Error
* @access public
* @since 1.0
*/
function GetError($in_Index)
{
return $this->Entries[$in_Index]->Error;
} // end of the 'GetError()' method
/**
* Gets error message for the specified ZIP entry
*
* @param integer Index of the ZIP entry
* @return string Error message for the ZIP entry
* @uses SimpleUnzipEntry::$ErrorMsg
* @access public
* @since 1.0
*/
function GetErrorMsg($in_Index)
{
return $this->Entries[$in_Index]->ErrorMsg;
} // end of the 'GetErrorMsg()' method
/**
* Gets file name for the specified ZIP entry
*
* @param integer Index of the ZIP entry
* @return string File name for the ZIP entry
* @uses SimpleUnzipEntry::$Name
* @access public
* @since 1.0
*/
function GetName($in_Index)
{
return $this->Entries[$in_Index]->Name;
} // end of the 'GetName()' method
/**
* Gets path of the file for the specified ZIP entry
*
* @param integer Index of the ZIP entry
* @return string Path of the file for the ZIP entry
* @uses SimpleUnzipEntry::$Path
* @access public
* @since 1.0
*/
function GetPath($in_Index)
{
return $this->Entries[$in_Index]->Path;
} // end of the 'GetPath()' method
/**
* Gets file time for the specified ZIP entry
*
* @param integer Index of the ZIP entry
* @return integer File time for the ZIP entry (unix timestamp)
* @uses SimpleUnzipEntry::$Time
* @access public
* @since 1.0
*/
function GetTime($in_Index)
{
return $this->Entries[$in_Index]->Time;
} // end of the 'GetTime()' method
/**
* Reads ZIP file and extracts the entries
*
* @param string File name of the ZIP archive
* @return array ZIP entry list (see also class variable {@link $Entries $Entries})
* @uses SimpleUnzipEntry For the entries
* @access public
* @since 1.0
*/
function ReadFile($in_FileName)
{
$this->Entries = array();
// Get file parameters
$this->Name = $in_FileName;
$this->Time = filemtime($in_FileName);
$this->Size = filesize($in_FileName);
// Read file
$oF = fopen($in_FileName, 'rb');
$vZ = fread($oF, $this->Size);
fclose($oF);
// 2003-12-02 - HB >
// Cut end of central directory
$aE = explode("\x50\x4b\x05\x06", $vZ);
// Easiest way, but not sure if format changes
//$this->Comment = substr($aE[1], 18);
// Normal way
$aP = unpack('x16/v1CL', $aE[1]);
$this->Comment = substr($aE[1], 18, $aP['CL']);
// Translates end of line from other operating systems
$this->Comment = strtr($this->Comment, array("\r\n" => "\n",
"\r" => "\n"));
// 2003-12-02 - HB <
// Cut the entries from the central directory
$aE = explode("\x50\x4b\x01\x02",
上一篇:
unreadf.php
下一篇:
基于JSP邮件收发系统论文