PHP.mk документација

Примери

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

zip.examples.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека zip.examples.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
Примери

Референца за `zip.examples.php` со подобрена типографија и навигација.

zip.examples.php

Примери

Пример #1 Креирај Zip архива

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

Пример #1 Креирај Zip архива

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

Пример #2 Исфрли ги деталите и листата на архивата

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

Zip stream wrapper, прочитај мета информации од OpenOffice test2.zip Овој пример користи стар API (PHP 4), отвора ZIP датотека, чита секоја датотека во архивата и ги печати нејзините содржини. Архивата што се користи во овој пример е една од тест архивите во дистрибуцијата на изворниот код на ZZIPlib.

Пример #4 Пример за употреба на Zip

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

}
?>

Белешки од корисници 4 белешки

info на peterhofer dot ch
пред 17 години
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.
webmaster @ anonimno
12 години пред
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);
geandjay на gmail dot com
пред 17 години
<?php
        $zip = new ZipArchive;
    $zip->open('teste.zip');
    $zip->extractTo('./');
    $zip->close();
        echo "Ok!";
?>
Стефано Ди Паоло
пред 17 години
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;
  }
?>
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.