ZipArchive::addFromString

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

ZipArchive::addFromString使用其内容将文件添加到 ZIP 档案

描述

public ZipArchive::addFromString(string $name, string $content, int $flags = ZipArchive::FL_OVERWRITE): bool

使用其内容将文件添加到 ZIP 档案。

注意: 为了最大限度地提高可移植性,建议始终在 ZIP 文件名中使用正斜杠 (/) 作为目录分隔符。

参数

name

要创建的条目的名称。

content

用于创建条目的内容。它在二进制安全模式下使用。

flags

ZipArchive::FL_OVERWRITEZipArchive::FL_ENC_GUESSZipArchive::FL_ENC_UTF_8ZipArchive::FL_ENC_CP437 组成的位掩码。这些常量的行为在 ZIP 常量 页面上进行了描述。

返回值

成功时返回 true,失败时返回 false

变更日志

版本 描述
8.0.0 / 1.18.0 flags 已添加。

示例

示例 #1 将条目添加到新档案

<?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';
}
?>

示例 #2 将文件添加到档案中的目录

<?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';
}
?>
添加说明

用户贡献说明 7 条说明

11
Jacques Chester
17 年前
请注意,此函数会覆盖同名的现有文件。
7
tahazit dot co dot il at gmail dot com
9 年前
在 PHP >5.4 中,此函数通常会创建 ZIP 档案中的任何子文件夹。
例如

$zip->addFromString ( 'path/to/file.txt' , $data );

除了将新创建的文件“file.txt”放入“path/to/”文件夹外,还会创建文件夹“path/”和“path/to/”。
7
gbti at ukr dot net
15 年前
如果你尝试

<?php
$zip
->open("file", ZipArchive::CREATE);
$zip->addFromString("russian_letters/options.xml");
?>

将创建错误的目录。

如果你尝试

<?php
$zip
->addEmptyDir("russian_letters");
?>

一切都会好起来的。
3
hossam6 at gmail dot com
4 年前
如果你的字符串包含阿拉伯字符,ZipArchive::addFromString 会以错误的格式显示它们。
在这种情况下,你需要将字符串编码从 Unicode 更改为 Windows-1256 编码

$filetxt = iconv('utf-8','CP1256',$filetxt);
$zip = new ZipArchive;
$zipFName = "Tmp.zip";
if ($zip->open($zipFName, ZipArchive::CREATE) === TRUE)
{
$zip->addFromString($fileName . '.csv', $filetxt);
$zip->close();
}
5
xslidian at lidian dot info
11 年前
尽管覆盖文件后 numFiles 会改变,但当你再次 ZipArchive::close() 和 open() 时,它会恢复正常。
NULL 索引也不持久。只有新顺序会被保留。所以随意覆盖。

在这里,覆盖的工作方式与删除和添加相同。因此,不需要先使用 ZipArchive::deleteName()。
2
calebcjh
14 年前
虽然此函数会替换同名文件,但实际上,原始文件会被清空并添加一个新条目。numFiles 属性会增加。

示例

文件 1:foo
文件 2:bar

$zip->addFromString('foo', 'new foo');

文件 1
文件 2:bar
文件 3:foo
1
Jon at 9072997 dot com (yes that is real)
2 年前
ZipArchive::FL_ENC_GUESS、ZipArchive::FL_ENC_UTF_8 和 ZipArchive::FL_ENC_CP437 影响 $name 参数,而不是 $content
To Top