PHP - Manual手册 - CLXXXVII. Zip File Functions - Zip文件压缩函数 - 概述

来源:互联网 发布:西南大学网络教学平台 编辑:程序博客网 时间:2024/04/27 17:30

PHP - Manual手册 - CLXXXVII. Zip File Functions - Zip文件压缩函数 - 概述

CLXXXVII. Zip File Functions

简介

This extension enables you to transparently read or write ZIP compressed archives and the files inside them.

需求

PHP 4

The bundled PHP 4 version requires » ZZIPlib, by Guido Draheim, version 0.10.6 or later

PHP 5.2.0 or later

This extension uses the functions of » zlib by Jean-loup Gailly and Mark Adler.

安装

PHP 4

注意: Zip support before PHP 4.1.0 is experimental.

警告

Because the PHP 4 zip extension is unmaintained we recommend that the PECL extension is used rather than the bundled one.

Linux systems

In order to use these functions you must compile PHP with zip support by using the --with-zip[=DIR] configure option, where [DIR] is the prefix of the » ZZIPlib library install.

Windows

Windows users need to enable php_zip.dll inside of php.ini in order to use these functions.

PHP 5.2.0 and later

Linux systems

In order to use these functions you must compile PHP with zip support by using the --enable-zip configure option.

Windows

Windows users need to enable php_zip.dll inside of php.ini in order to use these functions.

Installation via PECL

安装此 PECL 扩展库的信息可在手册中标题为 PECL 扩展库安装的一章中找到。 更多信息如新版本,下载,源文件,维护者信息以及更新日志等可以在这里找到: » http://pecl.php.net/package/zip.

可以从 » PHP 下载页面或者 » http://snaps.php.net/ 下载此 PECL 扩展的 DLL 文件。

在 PHP 4 中本 DLL 位于 PHP Windows 执行包中的 extensions/ 目录下。

运行时配置

本扩展模块在 php.ini 中未定义任何配置选项。

资源类型

There are two resource types used in the Zip module. The first one is the Zip directory for the Zip archive, the second Zip Entry for the archive entries.

预定义常量

以下常量由本扩展模块定义,因此只有在本扩展模块被编译到 PHP 中,或者在运行时被动态加载后才有效。

ZipArchive uses class constants. There is three types of constants, Flags (FL_) errors (ER_) or mode (no prefix).

ZIPARCHIVE::CREATE (integer)
Create the archive if it does not exist.
ZIPARCHIVE::OVERWRITE (integer)
Always start a new archive, this mode will overwrite the file if it already exists.
ZIPARCHIVE::EXCL (integer)
Error if archive already exists.
ZIPARCHIVE::CHECKCONS (integer)
Perform additional consistency checks on the archive, and error if they fail.
ZIPARCHIVE::FL_NOCASE (integer)
Ignore case on name lookup
ZIPARCHIVE::FL_NODIR (integer)
Ignore directory component
ZIPARCHIVE::FL_COMPRESSED (integer)
Read compressed data
ZIPARCHIVE::FL_UNCHANGED (integer)
Use original data, ignoring changes.
ZIPARCHIVE::CM_DEFAULT (integer)
better of deflate or store.
ZIPARCHIVE::CM_STORE (integer)
stored (uncompressed).
ZIPARCHIVE::CM_SHRINK (integer)
shrunk
ZIPARCHIVE::CM_REDUCE_1 (integer)
reduced with factor 1
ZIPARCHIVE::CM_REDUCE_2 (integer)
reduced with factor 2
ZIPARCHIVE::CM_REDUCE_3 (integer)
reduced with factor 3
ZIPARCHIVE::CM_REDUCE_4 (integer)
reduced with factor 4
ZIPARCHIVE::CM_IMPLODE (integer)
imploded
ZIPARCHIVE::CM_DEFLATE (integer)
deflated
ZIPARCHIVE::CM_DEFLATE64 (integer)
deflate64
ZIPARCHIVE::CM_PKWARE_IMPLODE (integer)
PKWARE imploding
ZIPARCHIVE::CM_BZIP2 (integer)
BZIP2 algorithm
ZIPARCHIVE::ER_OK (integer)
No error.
ZIPARCHIVE::ER_MULTIDISK (integer)
Multi-disk zip archives not supported.
ZIPARCHIVE::ER_RENAME (integer)
Renaming temporary file failed.
ZIPARCHIVE::ER_CLOSE (integer)
Closing zip archive failed
ZIPARCHIVE::ER_SEEK (integer)
Seek error
ZIPARCHIVE::ER_READ (integer)
Read error
ZIPARCHIVE::ER_WRITE (integer)
Write error
ZIPARCHIVE::ER_CRC (integer)
CRC error
ZIPARCHIVE::ER_ZIPCLOSED (integer)
Containing zip archive was closed
ZIPARCHIVE::ER_NOENT (integer)
No such file.
ZIPARCHIVE::ER_EXISTS (integer)
File already exists
ZIPARCHIVE::ER_OPEN (integer)
Can't open file
ZIPARCHIVE::ER_TMPOPEN (integer)
Failure to create temporary file.
ZIPARCHIVE::ER_ZLIB (integer)
Zlib error
ZIPARCHIVE::ER_MEMORY (integer)
Memory allocation failure
ZIPARCHIVE::ER_CHANGED (string)
Entry has been changed
ZIPARCHIVE::ER_COMPNOTSUPP (integer)
Compression method not supported.
ZIPARCHIVE::ER_EOF (integer)
Premature EOF
ZIPARCHIVE::ER_INVAL (integer)
Invalid argument
ZIPARCHIVE::ER_NOZIP (integer)
Not a zip archive
ZIPARCHIVE::ER_INTERNAL (integer)
Internal error
ZIPARCHIVE::ER_INCONS (integer)
Zip archive inconsistent
ZIPARCHIVE::ER_REMOVE (integer)
Can't remove file
ZIPARCHIVE::ER_DELETED (integer)
Entry has been deleted

范例

例 2467. Create a Zip archive

<?php $zip = new ZipArchive(); $filename = "./test112.zip"; if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {     exit("cannot open <$filename>/n"); } $zip->addFromString("testfilephp.txt" . time(), "#1 This is a test string added as testfilephp.txt./n"); $zip->addFromString("testfilephp2.txt" . time(), "#2 This is a test string added as testfilephp2.txt./n"); $zip->addFile($thisdir . "/too.php","/testfromfile.php"); echo "numfiles: " . $zip->numFiles . "/n"; echo "status:" . $zip->status . "/n"; $zip->close(); ?>

例 2468. Dump the archive details and listing

<?php $za = new ZipArchive(); $za->open('test_with_comment.zip'); print_r($za); var_dump($za); echo "numFiles: " . $za->numFiles . "/n"; echo "status: " . $za->status  . "/n"; echo "statusSys: " . $za->statusSys . "/n"; echo "filename: " . $za->filename . "/n"; echo "comment: " . $za->comment . "/n"; for ($i=0; $i<$za->numFiles;$i++) {     echo "index: $i/n";     print_r($za->statIndex($i)); } echo "numFile:" . $za->numFiles . "/n"; ?>

例 2469. Zip stream wrapper, read an OpenOffice meta info

<?php $reader = new XMLReader(); $reader->open('zip://' . dirname(__FILE__) . '/test.odt#meta.xml'); $odt_meta = array(); while ($reader->read()) {     if ($reader->nodeType == XMLREADER::ELEMENT) {         $elm = $reader->name;     } else {         if ($reader->nodeType == XMLREADER::END_ELEMENT && $reader->name == 'office:meta') {             break;         }         if (!trim($reader->value)) {             continue;         }         $odt_meta[$elm] = $reader->value;     } } print_r($odt_meta); ?>

This example uses the old API (PHP 4), it opens a ZIP file archive, reads each file in the archive and prints out its contents. The test2.zip archive used in this example is one of the test archives in the ZZIPlib source distribution.

例 2470. Zip Usage Example

<?php $zip = zip_open("/tmp/test2.zip"); if ($zip) {     while ($zip_entry = zip_read($zip)) {         echo "Name:               " . zip_entry_name($zip_entry) . "/n";         echo "Actual Filesize:    " . zip_entry_filesize($zip_entry) . "/n";         echo "Compressed Size:    " . zip_entry_compressedsize($zip_entry) . "/n";         echo "Compression Method: " . zip_entry_compressionmethod($zip_entry) . "/n";         if (zip_entry_open($zip, $zip_entry, "r")) {             echo "File Contents:/n";             $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));             echo "$buf/n";             zip_entry_close($zip_entry);         }         echo "/n";     }     zip_close($zip); } ?>

目录

zip_close — Close a ZIP file archive
zip_entry_close — Close a directory entry
zip_entry_compressedsize — Retrieve the compressed size of a directory entry
zip_entry_compressionmethod — Retrieve the compression method of a directory entry
zip_entry_filesize — Retrieve the actual file size of a directory entry
zip_entry_name — Retrieve the name of a directory entry
zip_entry_open — Open a directory entry for reading
zip_entry_read — Read from an open directory entry
zip_open — Open a ZIP file archive
zip_read — Read next entry in a ZIP file archive
ZipArchive::addFile — Adds a file to a ZIP archive from the given path
ZipArchive::addFromString — Add a file to a ZIP archive using its contents
ZipArchive::close — Close the active archive (opened or newly created)
ZipArchive::deleteIndex — delete an entry in the archive using its index
ZipArchive::deleteName — delete an entry in the archive using its name
ZipArchive::extractTo — Extract the archive contents
ZipArchive::getArchiveComment — Returns the Zip archive comment
ZipArchive::getCommentIndex — Returns the comment of an entry using the entry index
ZipArchive::getCommentName — Returns the comment of an entry using the entry name
ZipArchive::getFromIndex — Returns the entry contents using its index.
ZipArchive::getFromName — Returns the entry contents using its name.
ZipArchive::getNameIndex — Returns the name of an entry using its index
ZipArchive::getStream — Get a file handler to the entry defined by its name (read only).
ZipArchive::locateName — Returns the index of the entry in the archive
ZipArchive::open — Open a ZIP file archive
ZipArchive::renameIndex — Renames an entry defined by its index
ZipArchive::renameName — Renames an entry defined by its name
ZipArchive::setArchiveComment — Set the comment of a ZIP archive
ZipArchive::setCommentIndex — Set the comment of an entry defined by its index
ZipArchive::setCommentName — Set the comment of an entry defined by its name
ZipArchive::statIndex — Get the details of an entry defined by its index.
ZipArchive::statName — Get the details of an entry defined by its name.
ZipArchive::unchangeAll — Undo all changes done in the archive.
ZipArchive::unchangeArchive — Revert all global changes done in the archive.
ZipArchive::unchangeIndex — Revert all changes done to an entry at the given index.
ZipArchive::unchangeName — Revert all changes done to an entry with the given name.

[CLXXXVII. Zip File Functions - Zip文件压缩函数 - 概述 - 文档]

http://www.php.net/manual/zh/ref.zip.php

[PHP - 关键词]

php

[PHP - 相关论坛]

http://php.board.newsmth.net/ http://bbs.pku.edu.cn/, homepage看版 http://forum.csdn.net/SList/PHP/

[PHP - 下载]

AppServ 2.5.9, http://www.appservnetwork.com/

Zend Optimizer 3.3.0a, http://www.zend.com/products/zend_optimizer

phpMyAdmin 2.11.2, http://www.phpmyadmin.net/home_page/index.php

Zend Core 2.5.0, http://www.zend.com/products/zend_core

Zend Platform 3.0.3, http://www.zend.com/products/zend_platform

PHP 5.2.5, http://www.php.net/releases/5_2_5.php

Zend Studio 5.5, http://www.zend.com/products/zend_studio

Zend Guard 5.0, http://www.zend.com/products/zend_guard

[PHP - Manual手册]

PHP - reset — 将数组的内部指针指向第一个单元, http://www.php.net/manual/zh/function.reset.php

PHP - serialize — 产生一个可存储的值的表示, http://www.php.net/manual/zh/function.serialize.php

PHP: 魔术常量 - Manual:, http://www.php.net/manual/zh/language.constants.predefined.php

PHP: SOAP Functions - soap.wsdl_cache_enabled, http://cn.php.net/manual/zh/ref.soap.php#ini.soap.wsdl-cache-enabled

字符串转换为数值, http://www.php.net/manual/zh/language.types.string.php#language.types.string.conversion

Class Abstraction类抽象, http://www.php.net/manual/zh/language.oop5.abstract.php

foreach遍历数组, http://www.php.net/manual/zh/control-structures.foreach.php

SOAP configuration options missing documentation文档中丢失SOAP配置选项, http://bugs.php.net/bug.php?id=38644

PHP 的命令行模式, http://www.php.net/manual/zh/features.commandline.php

位运算符, http://www.php.net/manual/zh/language.operators.bitwise.php#id2665181

file_exists检查文件或目录是否存在, http://www.php.net/manual/zh/function.file-exists.php

is_file判断给定文件名是否为一个正常的文件, http://www.php.net/manual/zh/function.is-file.php  

settype设置变量的类型, http://cn.php.net/manual/zh/function.settype.php#function.settype

is_numeric检测变量是否为数字或数字字符串, http://www.php.net/manual/zh/function.is-numeric.php

ksort对数组按照键名排序, http://www.php.net/manual/zh/function.ksort.php

[PHP - Manual手册 - 下载]

http://www.php.net/download-docs.php

[PHP - Manual手册 - 第 12 章 变量]

全局和静态变量的引用, http://www.php.net/manual/zh/language.variables.scope.php#language.variables.scope.references

[PHP - Manual手册 - 第 15 章 运算符]

错误控制运算符, http://www.php.net/manual/zh/language.operators.errorcontrol.php

[PHP - Manual手册 - 第19章 类与对象(PHP 5)]

Object cloning对象克隆, http://www.php.net/manual/zh/language.oop5.cloning.php

[PHP - Manual手册 - 第20章 异常处理]

概述, http://www.php.net/manual/zh/language.exceptions.php

用异常处理php改进流程

[PHP - Manual手册 - 第21章 引用的解释]

引用返回, http://www.php.net/manual/zh/language.references.return.php

[PHP - Manual手册 - 第 43 章 PHP 的命令行模式]

表 43.2. CLI 专用常量, http://www.php.net/manual/zh/features.commandline.php#id2715646

[PHP - Manual手册 - V. Array 数组函数]

计算数组的交集, http://www.php.net/manual/zh/function.array-intersect.php

array_merge合并一个或多个数组, http://www.php.net/manual/zh/function.array-merge.php

[PHP - Manual手册 - XVIII. CURL, 客户端URL库函数]

概述, http://www.php.net/manual/zh/ref.curl.php

curl_setopt设置cURL传输的选项, http://www.php.net/manual/zh/function.curl-setopt.php

[PHP - Manual手册 - XXII. Date/Time 日期/时间函数]

date格式化一个本地时间/日期, http://www.php.net/manual/zh/function.date.php

[PHP - Manual手册 - XXXIII. Error Handling and Logging Functions错误处理和日志函数]

概述, http://www.php.net/manual/zh/ref.errorfunc.php

[PHP - Manual手册 - XLVII. Function Handling Functions函数管理函数]

register_shutdown_function注册一个脚本结束时调用的函数, http://www.php.net/manual/zh/function.register-shutdown-function.php

[PHP - Manual手册 - XC. Miscellaneous Functions杂项函数]

sleep延迟执行, http://www.php.net/manual/zh/ref.misc.php

uniqid生成唯一ID, http://www.php.net/manual/zh/function.uniqid.php

[PHP - Manual手册 - XCVIII. MySQL 函数]

mysql_real_escape_string转义SQL语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集, http://www.php.net/manual/zh/function.mysql-real-escape-string.php

[PHP - Manual手册 - CII. Network Functions网络函数]

setcookie发送一个cookie, http://www.php.net/manual/zh/function.setcookie.php

[PHP - Manual手册 - CXXVII. PostgreSQL 数据库函数]

pg_insert将数组插入到表中, http://www.php.net/manual/zh/index.php

[PHP - Manual手册 - CXXX. Program Execution Functions程序调用函数]

proc_open执行命令并打开用于输入输出的文件指针, http://www.php.net/manual/zh/function.proc-open.php

[PHP - Manual手册 - CXLIX. Session 会话处理函数]

session.save_path 定义了传递给存储处理器的参数, http://www.php.net/manual/zh/ref.session.php#ini.session.save-path

session.use_only_cookies指定是否在客户端仅仅使用 cookie 来存放会话 ID, http://www.php.net/manual/zh/ref.session.php#ini.session.use-only-cookies

[PHP - Manual手册 - CLXI. String 字符串处理函数]

str_pad使用另一个字符串将一个字符串填充到指定长度, http://www.php.net/manual/zh/function.str-pad.php

strpos查找一个字符串第一次出现的位置, http://www.php.net/manual/zh/function.strpos.php

substr返回字符串中的一部分, http://www.php.net/manual/zh/function.substr.php

[PHP - Manual手册 - CLXVI. Tidy Functions - Tidy函数]

概述, http://www.php.net/manual/zh/ref.tidy.php

[PHP - Manual手册 - CLXVII. Tokenizer Functions解析器代号函数]

token_get_all把给定源代码分解成解析器代号, http://www.php.net/manual/zh/function.token-get-all.php

[PHP - Manual手册 - CLXIX. URL 函数]

概述, http://www.php.net/manual/zh/ref.url.php

[PHP - Manual手册 - CLXXXVII. Zip File Functions - Zip文件压缩函数]

概述, http://www.php.net/manual/zh/ref.zip.php

[PHP - Manual手册 - 附录 H. php.ini 配置选项]

register_globals 决定是否将 EGPCS(Environment,GET,POST,Cookie,Server)变量注册为全局变量, http://www.php.net/manual/zh/ini.core.php#ini.register-globals

short_open_tag决定是否允许使用PHP代码开始标志的缩写形式, http://www.php.net/manual/zh/ini.core.php#ini.short-open-tag

[PHP - Manual手册 - 附录 L. 保留字列表]

服务器变量:$_SERVER, http://www.php.net/manual/zh/reserved.variables.php#reserved.variables.server

[PHP - Manual手册 - 附录 Q. PHP 类型比较表]

表 Q.2. 用 == 进行松散比较, http://www.php.net/manual/zh/types.comparisons.php#id9240444

[PHP - 应用实例]

语法着色, php.exe -s "%1" > "%1.html"

移除SimpleXML对象中的子对象