En este tutorial se muestra como comprimir cadenas en PHP. Para esto se hace uso de las funciones gzcompress y gzuncompress sobre una cadena de texto extensa.
Para este ejemplo se crea un archivo llamado compress.php, se ubica en una carpeta del servidor web de pruebas y se le agrega las etiquetas de bloque de PHP.
<?php ?>
Luego se procede a crear la cadena que se va comprimir. Se intenta agregar una cadena extensa, de manera que el trabajo realizado por la compresión sea notorio.
<?php $string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut elit id mi ultricies adipiscing. Nulla facilisi. Praesent pulvinar, sapien vel feugiat vestibulum, nulla dui pretium orci, non ultricies elit lacus quis ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam pretium ullamcorper urna quis iaculis. Etiam ac massa sed turpis tempor luctus. Curabitur sed nibh eu elit mollis congue. Praesent ipsum diam, consectetur vitae ornare a, aliquam a nunc. In id magna pellentesque tellus posuere adipiscing. Sed non mi metus, at lacinia augue. Sed magna nisi, ornare in mollis in, mollis sed nunc. Etiam at justo in leo congue mollis. Nullam in neque eget metus hendrerit scelerisque eu non enim. Ut malesuada lacus eu nulla bibendum id euismod urna sodales."; ?>
Luego se comprueba la longitud inicial de dicha cadena. Para esto se hace uso de la función strlen.
<?php $string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut elit id mi ultricies adipiscing. Nulla facilisi. Praesent pulvinar, sapien vel feugiat vestibulum, nulla dui pretium orci, non ultricies elit lacus quis ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam pretium ullamcorper urna quis iaculis. Etiam ac massa sed turpis tempor luctus. Curabitur sed nibh eu elit mollis congue. Praesent ipsum diam, consectetur vitae ornare a, aliquam a nunc. In id magna pellentesque tellus posuere adipiscing. Sed non mi metus, at lacinia augue. Sed magna nisi, ornare in mollis in, mollis sed nunc. Etiam at justo in leo congue mollis. Nullam in neque eget metus hendrerit scelerisque eu non enim. Ut malesuada lacus eu nulla bibendum id euismod urna sodales."; echo 'Longitud de la cadena original: '.strlen($string).' '; ?>
Luego se comprime la cadena haciendo uso de la función gzcompress, la cual recibe un solo parámetro que es la cadena original sin comprimir y devuelve la cadena comprimida. Para comprobar la eficiencia de la compresión se imprime en seguida la longitud de la cadena comprimida.
<?php $string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut elit id mi ultricies adipiscing. Nulla facilisi. Praesent pulvinar, sapien vel feugiat vestibulum, nulla dui pretium orci, non ultricies elit lacus quis ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam pretium ullamcorper urna quis iaculis. Etiam ac massa sed turpis tempor luctus. Curabitur sed nibh eu elit mollis congue. Praesent ipsum diam, consectetur vitae ornare a, aliquam a nunc. In id magna pellentesque tellus posuere adipiscing. Sed non mi metus, at lacinia augue. Sed magna nisi, ornare in mollis in, mollis sed nunc. Etiam at justo in leo congue mollis. Nullam in neque eget metus hendrerit scelerisque eu non enim. Ut malesuada lacus eu nulla bibendum id euismod urna sodales."; echo 'Longitud de la cadena original: '.strlen($string).' '; $compressed = gzcompress($string); echo 'Longitud de la cadena comprimida: '.strlen($compressed).' '; ?>
Para mostrar que al comprimir no se ha perdido realmente la integridad de la cadena se procede a descomprimir comprobando la longitud de la cadena descomprimida y comparándola con la cadena original sin comprimir.
<?php $string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut elit id mi ultricies adipiscing. Nulla facilisi. Praesent pulvinar, sapien vel feugiat vestibulum, nulla dui pretium orci, non ultricies elit lacus quis ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam pretium ullamcorper urna quis iaculis. Etiam ac massa sed turpis tempor luctus. Curabitur sed nibh eu elit mollis congue. Praesent ipsum diam, consectetur vitae ornare a, aliquam a nunc. In id magna pellentesque tellus posuere adipiscing. Sed non mi metus, at lacinia augue. Sed magna nisi, ornare in mollis in, mollis sed nunc. Etiam at justo in leo congue mollis. Nullam in neque eget metus hendrerit scelerisque eu non enim. Ut malesuada lacus eu nulla bibendum id euismod urna sodales."; echo 'Longitud de la cadena original: '.strlen($string).' '; $compressed = gzcompress($string); echo 'Longitud de la cadena comprimida: '.strlen($compressed).' '; $original = gzuncompress($compressed); echo 'Longitud de la cadena original: '.strlen($original).' '; ?>
Por último, se abre este archivo PHP en un navegador y se comprueba que realmente la función gzcompress comprime cadenas de texto sin perder la integridad de la información que contienen.
1 Comment
Hola, gracias por tu post, he revisado el tema y me parece bien, pero quiero hacer eso y la cantidad comprimida no supere los 4000 caracteres, alguna ayuda con esto la agradecería.