假设我有一个名为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
,但我看不到将其放在某个文件夹中的方法。这是我的整个目录中唯一需要更改的文件。
任何帮助都会很棒。
答案 0 :(得分:1)
如果你看看http://www.php.net/manual/en/ziparchive.addfromstring.php的例#2,你会看到ZipArchive :: addFromString的第一个参数实际上可以是你zip档案中的任何路径。
因此,在您的情况下,呼叫将如下所示:
$zip->addFromString("css/main/color.css",$css);