PDA

Просмотр полной версии : Работа с .zip


.::BARS::.
19.11.2008, 11:32
Привет, есть файл зип, точнее их много, и они имеют разные имена, но у все расширения .zip.
Задача такая, нужно открыть файл, Найти в нем файл (во всех архивах от один и тот же, т.е. имеет одно и тоже имя), далее переименовать его, закрыть файл, вот все что требуется...
Как это реализовать?

Pashkela
19.11.2008, 12:14
http://ru2.php.net/zip

Neoveneficus
19.11.2008, 15:28
можно sh скриптом под linux'ом

t4Nk
19.11.2008, 16:09
<?php
$find = 'burn.exe'; // Файл который нужно переименовать
$rename = '1.exe'; // новое имя
$dir = '.'; // папка с архивами

$h = opendir($dir);
$zip = new ZipArchive;
while (($f = readdir($h)) !== false) {
if (!is_file($f)) continue;
if (substr($f, strrpos($f, '.')+1) != 'zip') continue;
$res = $zip->open($f);
if ($res === true) {
if ($zip->renameName($find, $rename))
echo $f . "... OK\n";
else echo 'File '. $find . ' not found in '. $f ."\n";
$zip->close();
} else echo "Error: ". $res;
}
?>

Переименовывает, только если файл находится в корне архива

.::BARS::.
19.11.2008, 18:02
t4Nk, класс инклудить нужно?

t4Nk
19.11.2008, 18:05
t4Nk, класс инклудить нужно?
стандартное дополнение php_zip
не помню, включено по умолчанию или нет =\

[Raz0r]
19.11.2008, 20:38
стандартное дополнение php_zip
не помню, включено по умолчанию или нет =\
это PECL расширение, в php.ini необходимо добавить строку для его использования.
Если таковой возможности нет, то лучше использовать класс PclZip (http://www.phpconcept.net/pclzip/index.en.php) (установка расширений не требуется)

.::BARS::.
27.11.2008, 09:47
zС какими архивами такое еще проканает?