LinuxParty
Resumen:
PHP 5.2 incluye, finalmente, soporte nativo para archivos ZIP. Esta cuarta entrega de la serie "¿Qué hay de nuevo en PHP 5.2?" te muestra cómo usar esta nueva funcionalidad para crear, editar, leer, subir y descargar archivos ZIP. Al terminar, estarás preparado para manipular archivos comprimidos directamente desde PHP, ahorrando ancho de banda y espacio en disco.
Introducción a ZIP
El formato ZIP, introducido en 1989 por Phil Katz (PKZIP), permite comprimir y agrupar varios archivos en un solo contenedor. Su especificación abierta ha facilitado su inclusión en gestores de archivos de Windows®, macOS, Konqueror y Nautilus.
Ventajas de la compresión ZIP:
-
Reducción del tamaño de los archivos.
-
Agrupación de múltiples archivos en uno solo.
-
Ahorro de ancho de banda al transferir.
-
Mayor comodidad para el usuario final.
En sistemas como Windows XP, un archivo ZIP se abre como una "carpeta comprimida" con doble clic. Lo mismo ocurre en entornos KDE, GNOME o macOS.
¿A dónde va ese espacio?
Al crear un archivo ZIP, los archivos se "deflan", es decir, se comprimen eliminando redundancias (palabras repetidas, espacios vacíos, etc.).
Ejemplo:
Archivo de texto original:
“You make a living by what you get; you make a life by what you give.”
Análisis de duplicados:
Palabras únicas:
Archivo comprimido (ejemplo con índice):
1 2 3 living 4 5 1 get, 1 2 3 life 4 5 1 give
Aunque la compresión es modesta en este caso (de 64 a 56 caracteres), cuando se aplican textos largos los beneficios se amplifican. En promedio:
-
Archivos de texto → 70% de compresión.
-
Imágenes (ya comprimidas, como JPEG) → 10% o menos.
¿Qué hay dentro de un ZIP?
Un archivo ZIP contiene:
-
Una estructura jerárquica (como un sistema de archivos).
-
Múltiples archivos y carpetas.
-
Metadatos (nombre, tamaño, checksum).
PHP permite acceder a esta información mediante la clase ZipArchive
. Puedes:
-
Ver contenido sin extraer.
-
Leer o verificar archivos.
-
Manipular directorios internos.
Crear archivos ZIP con PHP
Necesitamos:
-
Un archivo
.txt
como base. -
Código PHP para crear el ZIP y agregar contenido.
📄 testtext.txt
Had I the heavens' embroidered cloths, Enwrought with golden and silver light, ... Tread softly because you tread on my dreams.
📁 Código PHP para crear el ZIP (zipcreate.php)
<?php $zip = new ZipArchive(); $filename = "newzip.zip"; if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) { exit("No se puede abrir <$filename>\n"); } $zip->addFromString("firstfile." . time() . ".txt", "Este es el primer archivo en el ZIP.\n"); $zip->addFromString("testdir/secondfile." . time() . ".txt", "Este es el segundo archivo, en el directorio testdir.\n"); echo "Archivos en el ZIP: " . $zip->numFiles . "\n"; $zip->close(); ?>
🖼️ Salida esperada (ASCII)
+-----------------------------+ | ZIP creado: newzip.zip | | Contenido: | | - firstfile.1729924832.txt| | - testdir/secondfile... | +-----------------------------+
Añadir archivos externos al ZIP
$zip->addFile("testtext.txt");
Este método incorpora archivos reales al archivo ZIP. Si están en el mismo directorio que el script PHP, se incluirán directamente.
Leer archivos ZIP con PHP
📁 Código (zipread.php)
<?php $zip = new ZipArchive(); $filename = "newzip.zip"; if ($zip->open($filename)!==TRUE) { exit("No se puede abrir <$filename>\n"); } echo "Contenido del ZIP:<br>"; for ($i=0; $i<$zip->numFiles; $i++) { $stat = $zip->statIndex($i); echo "Archivo $i: " . $stat['name'] . "<br>"; } $zip->extractTo('./testdestination/'); $zip->close(); ?>
El ZIP se abre, lista su contenido y se extrae automáticamente a la carpeta testdestination/
.
⚠️ Si ya existen archivos con el mismo nombre, serán sobrescritos.
Aplicaciones prácticas
-
Subidas en lote: permite que el usuario suba múltiples archivos a través de un único ZIP.
-
Descargas organizadas: agrupar resultados o reportes en un solo archivo descargable.
-
Reducción de tráfico: menos peso = menos coste de transferencia.
La integración nativa del soporte ZIP en PHP 5.2 proporciona una solución robusta y versátil para manipular archivos comprimidos. Desde la creación de archivos con contenido dinámico hasta su lectura y extracción, las funciones de ZipArchive
abren un nuevo abanico de posibilidades para desarrolladores PHP.
¿Quieres que prepare una versión en PDF, Markdown o como plantilla para publicación? Puedo hacerlo en un solo paso.

-
Ciencia
- Los 'puntos quántum', podrían ser un sistema de Teleportación.
- Refutan teoría sobre VIH
- ¿Se puede detener la luz?
- Enviar agua dulce vía corriente oceánica
- Insectos para aclarar crímenes
- Bebé de Mamut, en perfecto estado de conservación.
- A dos patas se consume menos...
- Adiós al preservativo - Un lubricante para protegerte del Sida
- Nueva Teoría Explica las Extenciones Masivas
- ¿Cual es tu edad verdadera? ¿Cuánto vivirás si sigues así...?
- Cómo evolucionan las supersociedades de insectos
- Resucitan una bacteria de hace 8 millones de años.