PHP 8.5.2 Released!

gzfile

(PHP 4, PHP 5, PHP 7, PHP 8)

gzfileRead entire gz-file into an array

说明

gzfile(string $filename, bool $use_include_path = false): array|false

This function is identical to readgzfile(), except that it returns the file in an array.

参数

filename

The file name.

use_include_path
If set to true, files in the include_path are searched for too.

返回值

An array containing the file, one line per cell, empty lines included, and with newlines still attached, 或者在失败时返回 false.

更新日志

版本 说明
8.5.0 use_include_path is now of type bool. Previously, it was of type int.

示例

示例 #1 gzfile() example

<?php
$lines
= gzfile('somefile.gz');
foreach (
$lines as $line) {
echo
$line;
}
?>

参见

添加备注

用户贡献的备注 4 notes

up
3
The Jedi
20 years ago
A quicker way to load a gziped file in a string :
<?php
function gzfile_get_contents($filename, $use_include_path = 0)
{
    //File does not exist
    if( !@file_exists($filename) )
    {    return false;    }
    
    //Read and imploding the array to produce a one line string
   $data = gzfile($filename, $use_include_path);
   $data = implode($data);
   return $data;
}
?>
up
2
nb_nonospamm_ at wtal dot de
20 years ago
In PHP4.4.1 I noticed that gzfile only reads up to 8190 bytes per line. I had a 20K SQL query that was cut into 3 parts - and wondered why the SQL server complained. 

Reading an uncompressed file with the file() command works as expected.
up
1
jani at php dot net
17 years ago
This function is not binary safe. (intentionally, or not, that's the question :)
up
0
webmaster at ragnarokonline dot de
22 years ago
This works similar to gzfile() but it returns the file in a string instead of an array and doesn't write it to stdout compared to readgzfile.

Note: unlike the usual file-functions filesize won't work here, since the length-parameter of gzread refers to the uncompressed length, while filesize returns the size of the compressed file.

<?php
function gzfile_get_contents($filename, $use_include_path = 0) {
    $file = @gzopen($filename, 'rb', $use_include_path);
    if ($file) {
        $data = '';
        while (!gzeof($file)) {
            $data .= gzread($file, 1024);
        }
        gzclose($file);
    }
    return $data;
}
?>
To Top