PHP Conference Japan 2024

gzfile

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

gzfile將整個 gz 壓縮檔讀入陣列

說明

gzfile(字串 $filename, 整數 $use_include_path = 0): 陣列|false

此函式與 readgzfile() 相同,差別在於它以陣列形式返回檔案內容。

參數

filename

檔案名稱。

use_include_path

您可以將此可選參數設定為 1,如果您也想在 include_path 中搜尋檔案。

返回值

一個包含檔案內容的陣列,每個儲存格一行,包含空行,且仍附加換行符號,或者失敗時返回 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 相比,它不會將檔案寫入 stdout。

注意:與通常的檔案函式不同,filesize 在這裡不起作用,因為 gzread 的長度參數指的是未壓縮的長度,而 filesize 返回的是壓縮檔案的大小。

<?php
函式 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