¿Cómo comprimir cadenas en PHP?

1

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.

Comparte este post.
Artículos Recomendados Para Tí:

1 Comment

  1. 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.

Escribe tu comentario