ホームページ  >  記事  >  バックエンド開発  >  PHP ZipArchive圧縮関数の詳細な例_PHPチュートリアル

PHP ZipArchive圧縮関数の詳細な例_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:25:27811ブラウズ

ZipArchive を使用してファイルを圧縮します。これは php5.2 以降でサポートされている拡張機能です。使用中にエラーが発生する場合は、php.ini の extension=php_zip.dll の前のセミコロンを確認してください。このクラス ライブラリを使用できるように、削除してから Apache を再起動しましたか?
例 1、zip 圧縮ファイルを生成します

コードをコピーします コードは次のとおりです:

/* zip 圧縮ファイルを生成*/
function create_zip($files = array(), $destination = ' ',$overwrite = false) {
//zip ファイルが既に存在し、上書きが false の場合、false を返します
if(file_exists($destination) && !$overwrite) { return false; }
//vars
$valid_files = array();
//ファイルが渡された場合...
if(is_array($files)) {
//各ファイルを循環する
foreach($files as $file) {
//makeファイルが存在することを確認してください
If(count($valid_files)) {
// アーカイブを作成します
$zip = new ZipArchive(); if($zip- >open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE ::CREATE) !== true) { $zip
// ファイルを追加します
Foreach ($ value_file s as $File) {
$ file_info_arr = PATHINFO ($ file) ']; // 階層ディレクトリを削除します ...
$ zip-> close(); pdf',
ROOTPATH.DIRECTORY_SEPARATOR.'TurboListerZeroTemplate.csv'
);
// true の場合は正常、false の場合は zip の作成に失敗しました
$filename='my-archive.zip'
$result = create_zip ,$filename);


例 2、フォルダーの下にあるすべてのファイルを圧縮します



コードをコピーします

コードは次のとおりです:

/*
php zip压缩文件夹下のすべての文件
*/
class HZip
{
/**
* ファイルとサブディレクトリを zip ファイルに追加します
* @param string $folder
* @param ZipArchive $zipFile
* @param int $exclusiveLength ファイル パスから除外されるテキストの数
*/
private static functionfolderToZip($folder, &$zipFile, $ exclusiveLength) {
$handle = opendir($folder);
while (false !== $f = readdir($handle)) {
if ($f != '.' && $f != '..') {
$filePath = "$folder/$f";
// zip に追加する前にファイル パスからプレフィックスを削除します。
$localPath = substr($filePath, $exclusiveLength);
if (is_file($filePath)) {
$zipFile->addFile($filePath, $localPath);
} elseif (is_dir($filePath)) {
// 追加子文件夹
$zipFile->addEmptyDir($localPath);
self::folderToZip($filePath, $zipFile, $exclusiveLength);
}
}
}
closeir($handle);
}

/**
* フォルダーを圧縮します (フォルダー自体を含めます)。
* 使用法:
* HZip::zipDir('/path/to/sourceDir', '/path/to/out.zip');
*
* @param string $sourcePath zip にするディレクトリのパス。
* @param string $outZipPath 出力 zip ファイルのパス。
  */
public static function zipDir($sourcePath, $outZipPath)
{
$pathInfo = pathInfo($sourcePath);
$parentPath = $pathInfo['dirname'];
$dirName = $pathInfo['basename'];
$sourcePath=$parentPath.'/'.$dirName;// 'folder' 文件夹产生バグを防ぐ
$z = new ZipArchive();
$z->open($outZipPath, ZIPARCHIVE::CREATE);//建立zip文件
$z->addEmptyDir($dirName);//建立文件夹
self::folderToZip($sourcePath, $z , strlen("$parentPath/"));
$z->close();
}
}

//メソッド
HZip::zipDir('yourlife', 'yourlife.zip'); を使用します。
?>

1.ZipArchive::addEmptyDir
新しいファイルの項目を追加します
2.ZipArchive::addFile
指定された zip 圧縮パッケージにファイルを追加します。
3.ZipArchive::addFromString
追加されたファイルと同時にコンテンツを追加します
4 .ZipArchive::close
关闭ziparchive
5.ZipArchive::extractTo
将压缩包解压
6.ZipArchive::open
打开一zip压缩包
7.ZipArchive::getStatusString
は压缩包解压
の内容を返します、错误を含む情報,压缩信息等等
8.ZipArchive::deleteIndex
删除压缩包内の特定の文書、例:deleteIndex(0)删除第一文件
9.ZipArchive::deleteName
删除压缩包内の特定の文書名前と同時にファイルも削除されます。

http://www.bkjia.com/PHPjc/825095.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/825095.html技術記事使用ZipArchive圧縮ファイル、これはphpの扩展类、自php5.2バージョン以降就自サポートこの扩展、如果你使用時候出现错误、查看下php.ini里面的拡張...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。