• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ZipArchive::addFromString()

    (PHP 5 >= 5.2.0, PHP 7, PECL zip >= 1.1.0)

    Add a file to a ZIP archive using its contents

    说明

    ZipArchive::addFromString(string $localname,string $contents): bool

    Add a file to a ZIP archive using its contents.

    Note:For maximum portability, it is recommended to always use forward slashes(/)as directory separator in ZIP filenames.

    参数

    $localname

    The name of the entry to create.

    $contents

    The contents to use to create the entry. It is used in a binary safe mode.

    返回值

    成功时返回TRUE,或者在失败时返回FALSE

    范例

    Add an entry to a new archive

    <?php
    $zip = new ZipArchive;
    $res = $zip->open('test.zip', ZipArchive::CREATE);
    if ($res === TRUE) {
        $zip->addFromString('test.txt', 'file content goes here');
        $zip->close();
        echo 'ok';
    } else {
        echo 'failed';
    }
    ?>
    

    Add file to a directory inside an archive

    <?php
    $zip = new ZipArchive;
    if ($zip->open('test.zip') === TRUE) {
        $zip->addFromString('dir/test.txt', 'file content goes here');
        $zip->close();
        echo 'ok';
    } else {
        echo 'failed';
    }
    ?>
    
    Note that this function overwrites existing files of the same name.
    if you try:
    <?php
    $zip->open("file", ZipArchive::CREATE);
    $zip->addFromString("russian_letters/options.xml");
    ?>
    wrong directory will be created.
    if you try:
    <?php
    $zip->addEmptyDir("russian_letters");
    ?>
    All be fine.
    On PHP >5.4, This function will usually create any subfolders inside the ZIP archive.
    For instance:
      $zip->addFromString ( 'path/to/file.txt' , $data );
    will create the folders "path/", and "path/to/" in addition to placing the newly created file "file.txt" in "path/to/" folder.
    Although numFiles will change after overwriting a file, it will be back normal when you ZipArchive::close() and open() it again.
    NULL indexes don't persist either. Only the new order is kept. So feel free to overwrite.
    Here overwriting works the same as deleting and adding. So it's not necessary to ZipArchive::deleteName() first.
    Although this function displaces files of the same name, in actual fact, the original file is blanked and a new entry is added. The numFiles property is incremented.
    Example:
    File 1: foo
    File 2: bar
    $zip->addFromString('foo', 'new foo');
    File 1:
    File 2: bar
    File 3: foo