将文件从字符串添加到新文件夹ZipA​​rchive

时间:2013-07-06 08:34:05

标签: php zip zipfile

假设我有一个名为and instantiated的变量:

$css = 'body {color:red;}';

目前,我正在构建我的zip文件,如下所示:

    ini_set("max_execution_time", 300);
    // create object
    $zip = new ZipArchive();
    // open archive
    if ($zip->open("my-archive.zip", ZIPARCHIVE::CREATE) !== TRUE) {
        die ("Could not open archive");
    }
    // initialize an iterator
    // pass it the directory to be processed
    $jsFiles  = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("../js"));
    $cssFiles = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("../css"));
    $images   = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("../_design"));
    // iterate over the directory
    // add each file found to the archive
    foreach ($jsFiles as $key=>$value) {
        $zip->addFile(realpath($key), $key) or die ("ERROR: Could not add file: $key");
    }
    foreach ($cssFiles as $key=>$value) {
        $zip->addFile(realpath($key), $key) or die ("ERROR: Could not add file: $key");
    }
    foreach ($images as $key=>$value) {
        $zip->addFile(realpath($key), $key) or die ("ERROR: Could not add file: $key");
    }
    // close and save archive
    $zip->close();
    echo "Archive created successfully.";

假设我已经在color.css中有一个名为/css/main/color.css/的文件,我希望我的新字符串$css替换<文件中的< strong>存档,我该怎么办?我查看了ZipArchive::addFromString,但我看不到将其放在某个文件夹中的方法。这是我的整个目录中唯一需要更改的文件。

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

如果你看看http://www.php.net/manual/en/ziparchive.addfromstring.php的例#2,你会看到ZipArchive :: addFromString的第一个参数实际上可以是你zip档案中的任何路径。

因此,在您的情况下,呼叫将如下所示:

$zip->addFromString("css/main/color.css",$css);