ZipArchive::addFromString

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

ZipArchive::addFromString β€” ДобавляСт содСрТимоС Π² ZIP-Π°Ρ€Ρ…ΠΈΠ² ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ»

ОписаниС

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

ΠœΠ΅Ρ‚ΠΎΠ΄ добавляСт содСрТимоС Π² ZIP-Π°Ρ€Ρ…ΠΈΠ² ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ».

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Для максимальной пСрСносимости, рСкомСндуСтся всСгда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ прямыми слСшами / ΠΊΠ°ΠΊ раздСлитСлями Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ Π² ΠΈΠΌΠ΅Π½Π°Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

name
НазваниС записи, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ.
content
Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎ бСзопасном Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ создаст Ρ„Π°ΠΉΠ» Π² Π°Ρ€Ρ…ΠΈΠ²Π΅.
flags
Битовая маска ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… констант: ZipArchive::FL_OVERWRITE, ZipArchive::FL_ENC_GUESS, ZipArchive::FL_ENC_UTF_8, ZipArchive::FL_ENC_CP437. ПовСдСниС констант описываСт страница Β«ZIP-константы».

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true, Ссли Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΈΠ»ΠΈ false, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка.

Бписок измСнСний

ВСрсия ОписаниС
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
'Ошибка';
}

?>
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 7 notes

up
12
Jacques Chester ΒΆ
19 years ago
Note that this function overwrites existing files of the same name.
up
3
Jon at 9072997 dot com (yes that is real) ΒΆ
4 years ago
ZipArchive::FL_ENC_GUESS, ZipArchive::FL_ENC_UTF_8, and ZipArchive::FL_ENC_CP437 affect the $name parameter, not $content
up
8
gbti at ukr dot net ΒΆ
17 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.
up
4
hossam6 at gmail dot com ΒΆ
5 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();
}
up
7
tahazit dot co dot il at gmail dot com ΒΆ
11 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.
up
5
xslidian at lidian dot info ΒΆ
13 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.
up
2
calebcjh ΒΆ
16 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