ZipArchive::getFromName

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

ZipArchive::getFromName使用其名称返回条目内容

描述

public ZipArchive::getFromName(string $name, int $len = 0, int $flags = 0): string|false

使用其名称返回条目内容。

参数

name

条目的名称

len

要从条目中读取的长度。如果为 0,则读取整个条目。

flags

用于查找条目的标志。以下值可以按位或运算。

返回值

成功时返回条目的内容,失败时返回 false

示例

示例 #1 获取文件内容

<?php
$zip
= new ZipArchive;
if (
$zip->open('test1.zip') === TRUE) {
echo
$zip->getFromName('testfromfile.php');
$zip->close();
} else {
echo
'failed';
}
?>

示例 #2 从 zip 条目转换图像

<?php
$z
= new ZipArchive();
if (
$z->open(dirname(__FILE__) . '/test_im.zip')) {
$im_string = $z->getFromName("pear_item.gif");
$im = imagecreatefromstring($im_string);
imagepng($im, 'b.png');
}
?>

参见

添加注释

用户贡献的注释 2 个注释

henrik dot haftmann at gmail dot com
7 年前
对包含非 ASCII 字符的文件名的处理没有记录。似乎此函数调用了 <?php mb_convert_encoding($name,"CP850","UTF-8") ?>,因此它在 zipfile 中期望 DOS 编码,但在名称中期望 UTF-8 编码。如果 zipfile 使用 UTF-8 名称(Pkzip 4.5 / Winzip 11.2),此函数将失败。使用 getFromIndex 作为一种解决方法。
masterboreq at gmail dot com
4 年前
当将包含相对路径(在 ZIP 存档内)的显式字符串传递给方法时,例如 'path/to/file.php/',请确保使用单引号 (') 而不是双引号 (")。双引号会生成 FALSE(至少在 Windows 机器上),没有任何进一步的提示说明哪里出错了。
此外,请确保 ZIP 文件中使用的路径分隔符是反斜杠或正斜杠,因为在这个地方也会产生差异。
我希望我为你省去了使用这个(到目前为止)未提及的“功能”时的头痛。
To Top