2024 PHP开发者大会日本站

gzfile

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

gzfile将整个gz文件读取到数组中

描述

gzfile(字符串 $filename, 整数 $use_include_path = 0): 数组|false

此函数与readgzfile()相同,只是它将文件返回为数组。

参数

filename

文件名。

use_include_path

如果要搜索include_path中的文件,可以将此可选参数设置为1

返回值

包含文件的数组,每单元格一行,包括空行,并保留换行符,或者在失败时返回false

示例

示例 #1 gzfile() 示例

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

参见

添加注释

用户贡献的注释 4条注释

nb_nonospamm_ at wtal dot de
19年前
在PHP4.4.1中,我注意到gzfile每行只读取最多8190字节。我有一个20K的SQL查询被分成3部分——我想知道为什么SQL服务器会报错。

使用file()命令读取未压缩的文件按预期工作。
jani at php dot net
16年前
此函数并非二进制安全。(故意为之,还是并非如此,这是个问题:))
The Jedi
19年前
一种更快的方法将压缩的gzip文件加载到字符串中
<?php
function gzfile_get_contents($filename, $use_include_path = 0)
{
//文件不存在
if( !@file_exists($filename) )
{ return
false; }

//读取并将数组合并以生成单行字符串
$data = gzfile($filename, $use_include_path);
$data = implode($data);
return
$data;
}
?>
webmaster at ragnarokonline dot de
20年前
此函数的功能类似于gzfile(),但它将文件返回为字符串而不是数组,并且与readgzfile相比不会将其写入标准输出。

注意:与通常的文件函数不同,filesize在这里不起作用,因为gzread的长度参数指的是未压缩的长度,而filesize返回的是压缩文件的大小。

<?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