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_OVERWRITE
,ZipArchive::FL_ENC_GUESS
,ZipArchive::FL_ENC_UTF_8
,ZipArchive::FL_ENC_CP437
。 これらの定数の振る舞いは、定義済みの定数 で説明しています。
変更履歴
バージョン | 説明 |
---|---|
8.0.0, PECL zip 1.18.0 |
flags が追加されました。
|
例
例1 新しいアーカイブへのエントリの追加
<?php
$zip = new ZipArchive;
$res = $zip->open('test.zip', ZipArchive::CREATE);
if ($res === TRUE) {
$zip->addFromString('test.txt', 'ここにファイルの内容を書きます');
$zip->close();
echo '成功';
} else {
echo '失敗';
}
?>
例2 アーカイブ内のディレクトリへのファイルの追加
<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
$zip->addFromString('dir/test.txt', 'ここにファイルの内容を書きます');
$zip->close();
echo '成功';
} else {
echo '失敗';
}
?>
+add a note
User Contributed Notes 7 notes
tahazit dot co dot il at gmail dot com ¶
10 years ago
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.
gbti at ukr dot net ¶
16 years ago
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.
hossam6 at gmail dot com ¶
4 years ago
in case your string contain Arabic char, ZipArchive::addFromString will show it in wrong format char.
in this case you have to change your string coding from Unicode to Windows-1256 code
$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();
}
xslidian at lidian dot info ¶
11 years ago
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.
calebcjh ¶
14 years ago
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
Jon at 9072997 dot com (yes that is real) ¶
2 years ago
ZipArchive::FL_ENC_GUESS, ZipArchive::FL_ENC_UTF_8, and ZipArchive::FL_ENC_CP437 affect the $name parameter, not $content