GoLang gzencode

is this article helpful? yes | no
GoLang replacement for PHP's gzencode [Golang Play | edit | history]
import (
    "bytes"
    "compress/gzip"
)

func gzencode(str string) ([]byte, error) {
    // Create a bytes.Buffer to store the compressed data
    var buf bytes.Buffer

    // Create a gzip.Writer to write the compressed data to buf
    gz := gzip.NewWriter(&buf)

    // Write the original string to the gzip.Writer
    _, err := gz.Write([]byte(str))
    if err != nil {
        return nil, err
    }

    // Close the gzip.Writer to flush the buffer to buf
    err = gz.Close()
    if err != nil {
        return nil, err
    }

    // Return the compressed data
    return buf.Bytes(), nil
}

PHP gzencode

PHP original manual for gzencode [ show | php.net ]

gzencode

(PHP 4 >= 4.0.4, PHP 5, PHP 7)

gzencodeCreate a gzip compressed string

Description

string gzencode ( string $data [, int $level = -1 [, int $encoding_mode = FORCE_GZIP ]] )

This function returns a compressed version of the input data compatible with the output of the gzip program.

For more information on the GZIP file format, see the document: » GZIP file format specification version 4.3 (RFC 1952).

Parameters

data

The data to encode.

level

The level of compression. Can be given as 0 for no compression up to 9 for maximum compression. If not given, the default compression level will be the default compression level of the zlib library.

encoding_mode

The encoding mode. Can be FORCE_GZIP (the default) or FORCE_DEFLATE.

Prior to PHP 5.4.0, using FORCE_DEFLATE results in a standard zlib deflated string (inclusive zlib headers) after a gzip file header but without the trailing crc32 checksum.

In PHP 5.4.0 and later, FORCE_DEFLATE generates RFC 1950 compliant output, consisting of a zlib header, the deflated data, and an Adler checksum.

Return Values

The encoded string, or FALSE if an error occurred.

Changelog

Version Description
5.4.0 FORCE_DEFLATE now generates RFC 1950 compliant output.

Examples

The resulting data contains the appropriate headers and data structure to make a standard .gz file, e.g.:

Example #1 Creating a gzip file

<?php
$data 
implode(""file("bigfile.txt"));
$gzdata gzencode($data9);
$fp fopen("bigfile.txt.gz""w");
fwrite($fp$gzdata);
fclose($fp);
?>

See Also