ConFoo 2025

ZipArchive::getFromName

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

ZipArchive::getFromNameDevuelve el contenido de la entrada utilizando su nombre

Descripción

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

Devuelve el contenido de la entrada utilizando su nombre

Parámetros

name

Nombre de la entrada

len

La longitud a ser leída desde la entrada. Si es 0, entonces toda la entrada es leída.

flags

Los indicadores a utilizar para abrir el archivo. Los siguientes valores podrían ser escritos juntos con un OR lógico en él.

Valores devueltos

Devuelve el contenido de la entrada en caso de tener éxito, o false en caso de error.

Ejemplos

Ejemplo #1 Obtener el contenido de los ficheros

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

Ejemplo #2 Convierte una imagen desde una entrada de fichero 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');
}
?>

Ver también

add a note

User Contributed Notes 2 notes

up
-2
henrik dot haftmann at gmail dot com
8 years ago
The handling of file names containing non-ASCII characters is undocumented. It seems that this function calls <?php mb_convert_encoding($name,"CP850","UTF-8") ?> and therefore expects DOS encoding in the zipfile but UTF-8 encoding for the name. If the zipfile uses UTF-8 names (Pkzip 4.5 / Winzip 11.2), this function fails. Use getFromIndex instead as a workaround.
up
-5
masterboreq at gmail dot com
4 years ago
When passing to the method explicit string which contains a relative path (inside the ZIP archive), e.g. 'path/to/file.php/' please make sure you used single quotation mark (') not the double one ("). Double quotation mark produce FALSE (at least at Windows machine) giving no further hints what gone wrong.
Also, please make sure that the path delimiters used inside your ZIP file is backslash or forward slash since it's make a difference in this place too.
I hope I saved you a headache while working with this (so far) unmentioned "feature" :)
To Top