PHP Conference Nagoya 2025

Örnekler

Örnek 1 - Bir Zip arşivi oluşturmak

<?php

$zip
= new ZipArchive();
$filename = "./test112.zip";

if (
$zip->open($filename, ZipArchive::CREATE)!==TRUE) {
exit(
"<$filename> açılamadı\n");
}

$zip->addFromString("testfilephp.txt" . time(),
"#1 Bu, testfilephp.txt olarak eklenen bir deneme dizgesidir.\n");
$zip->addFromString("testfilephp2.txt" . time(),
"#2 Bu, testfilephp2.txt olarak eklenen bir deneme dizgesidir.\n");
$zip->addFile($thisdir . "/too.php","/testfromfile.php");
echo
"dosya sayısı: " . $zip->numFiles . "\n";
echo
"durum:" . $zip->status . "\n";
$zip->close();
?>

Örnek 2 - Arşiv bilgilerinin dökümü ve listelenmesi

<?php
$za
= new ZipArchive();

$za->open('test_with_comment.zip');
print_r($za);
var_dump($za);
echo
"Dosya sayısı: " . $za->numFiles . "\n";
echo
"Durumu: " . $za->status . "\n";
echo
"Sistem durumu: " . $za->statusSys . "\n";
echo
"Dosya ismi: " . $za->filename . "\n";
echo
"Açıklama: " . $za->comment . "\n";

for (
$i=0; $i<$za->numFiles;$i++) {
echo
"İndis: $i\n";
print_r($za->statIndex($i));
}
echo
"Dosya sayısı:" . $za->numFiles . "\n";
?>

Örnek 3 - Zip akım sarmalayıcı; bir OpenOffice meta bilgisini okur

<?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);
?>

Bu örnekte PHP 4'teki eski eklenti kullanılmıştır. Bir zip dosya arşivi açılmakta, arşivdeki her dosya okunup içeriği basılmaktadır. Bu örnekte ZZIPlib kaynak paketiyle dağıtılan deneme arşivlerinden test2.zip dosyası kullanılmıştır.

Örnek 4 - Zip kullanım örneği (PHP 4)

<?php

$zip
= zip_open("/tmp/test2.zip");

if (
$zip) {
while (
$zip_entry = zip_read($zip)) {
echo
"İsim: " .
zip_entry_name($zip_entry) . "\n";
echo
"Özgün dosya boyu: " .
zip_entry_filesize($zip_entry) . "\n";
echo
"Sıkıştırılmış boyut: " .
zip_entry_compressedsize($zip_entry) . "\n";
echo
"Sıkıştırma yöntemi: " .
zip_entry_compressionmethod($zip_entry) . "\n";

if (
zip_entry_open($zip, $zip_entry, "r")) {
echo
"Dosya içeriği:\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);

}
?>
add a note

User Contributed Notes 4 notes

up
38
info at peterhofer dot ch
16 years ago
All these examples will not work if the php script has no write access within the folder.

Although you may say this is obvious, I found that in this case, $zip->open("name", ZIPARCHIVE::CREATE) doesn't return an error as it might not try to access the file system but rather allocates memory.

It is only $zip->close() that returns the error. This might cause you seeking at the wrong end.
up
8
webmaster @ anonymous
11 years ago
you can use this code for reading JAR files (java archives)

JAR files use the same ZIP format, so can be easily read

$zf = zip_open(realpath('D:/lucene/allinone/lucene-core.jar')); $i=1;
while($zf && $ze = zip_read($zf)) {
$zi[$i]['zip entry name']= zip_entry_name($ze);
$zi[$i]['zip entry filesize']= zip_entry_filesize($ze);
$zi[$i]['zip entry compressed size']= zip_entry_compressedsize($ze);
$zi[$i]['zip entry compression method']= zip_entry_compressionmethod($ze);
$zi[$i]['zip entry open status'] = zip_entry_open($zf,$ze);
//$zi[$i]['zip entry file contents'] = zip_entry_read($ze,100);
$i++;
}
print_r($zi);
zip_close($zf);
up
11
geandjay at gmail dot com
16 years ago
<?php
$zip
= new ZipArchive;
$zip->open('teste.zip');
$zip->extractTo('./');
$zip->close();
echo
"Ok!";
?>
up
0
Stefano Di Paolo
16 years ago
1) If you want to add files to a ZIP archive but you don't know if the ZiP file exists or not, you MUST check: this changes the way you open it !.
2) you can not append multiple flags, can use only one (or none).

If the zip does not exists, open it with:
$ziph->open($archiveFile, ZIPARCHIVE::CM_PKWARE_IMPLODE)
(or a different compression method)

If the zip already exists, open it with:
$ziph->open($archiveFile)
or
$ziph->open($archiveFile, ZIPARCHIVE::CHECKCONS)

Example: make backup files every hour and ZIP them all in a daily ZIP archive, so you want to get only one ZIP per day, each ZIP containing 24 files:
<?php
function archivebackup($archiveFile, $file, &$errMsg)
{
$ziph = new ZipArchive();
if(
file_exists($archiveFile))
{
if(
$ziph->open($archiveFile, ZIPARCHIVE::CHECKCONS) !== TRUE)
{
$errMsg = "Unable to Open $archiveFile";
return
1;
}
}
else
{
if(
$ziph->open($archiveFile, ZIPARCHIVE::CM_PKWARE_IMPLODE) !== TRUE)
{
$errMsg = "Could not Create $archiveFile";
return
1;
}
}
if(!
$ziph->addFile($file))
{
$errMsg = "error archiving $file in $archiveFile";
return
2;
}
$ziph->close();

return
0;
}
?>
To Top