gzfile()
(PHP 4, PHP 5, PHP 7)
Read entire gz-file into an array
说明
gzfile(string $filename[,int $use_include_path= 0]): array
This function is identical to readgzfile(), except that it returns the file in an array.
参数
- $filename
The file name.
- $use_include_path
You can set this optional parameter to1, if you want to search for the file in the include_path too.
返回值
An array containing the file, one line per cell, empty lines included, and with newlines still attached.
范例
gzfile() example
<?php $lines = gzfile('somefile.gz'); foreach ($lines as $line) { echo $line; } ?>
参见
readgzfile()
Output a gz-filegzopen()
Open gz-file
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.
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; } ?>
This function is not binary safe. (intentionally, or not, that's the question :)
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; } ?>