2

我们有一些 html 代码,例如:

<body>Some text</body>

和一个变量$contents

这是我第一次在 php 中使用 zip,有几个问题。

我如何能:

  1. 创建一个名为的文件夹HTML并将其放在里面$contents在 ftp 上没有真正的创建,只是在变量中)

  2. 创建一个index.html并将其放在HTML文件夹中,该文件夹位于$contents

    所以$contents之前的 zip 应该包含:

     /HTML/index.html (with <body>Some text</body> code inside)
    
  3. 创建一个包含$contents变量内所有内容的 zip 存档。

4

2 回答 2

1

如果我理解正确:

$contents = '/tmp/HTML';
// Make the directory
mkdir($contents);
// Write the html
file_put_contents("$contents/index.html", $html);
// Zip it up
$return_value = -1;
$output = array();
exec("zip -r contents.zip $contents 2>&1", $output, $return_value);
if ($return_value === 0){
    // No errors
    // You now have contents.zip to play with
} else {
   echo "Errors!";
   print_r($output);
}

我没有使用库来压缩它,只是命令行,但如果你愿意,你可以使用库(但我正在检查是否zip正确执行)。


如果你真的想在内存中做所有事情,你可以这样做:

$zip = new ZipArchive;
if ($zip->open('contents.zip') === TRUE) {
    $zip->addFromString('contents/index.html', $html);
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}

http://www.php.net/manual/en/ziparchive.addfromstring.php

于 2012-07-08T10:06:26.863 回答
0

我建议使用该ZipArchive课程。所以你可以有这样的东西

$html = '<body>some HTML</body>';
$contents = new ZipArchive();
if($contents->open('html.zip', ZipArchive::CREATE)){
    $contents->addEmptyDir('HTML');
    $contents->addFromString('index.html', $html);
    $contents->close()
}
于 2012-07-08T10:31:10.317 回答