2024 年 PHP 日本研討會

zlib://

bzip2://

zip://

zlib:// -- bzip2:// -- zip://壓縮串流

說明

compress.zlib://compress.bzip2://

zlib: 的作用類似於 gzopen(),不同之處在於此資料流可以與 fread() 和其他檔案系統函式一起使用。由於檔名中包含 ':' 字元會造成歧義,因此不建議使用此方法;請改用 compress.zlib://

compress.zlib://compress.bzip2:// 分別等同於 gzopen()bzopen(),即使在不支援 fopencookie 的系統上也能運作。

ZIP 擴充套件 註冊了 zip: 封裝器。從 PHP 7.2.0 和 libzip 1.2.0+ 開始,已新增對加密檔案密碼的支援,允許透過資料流上下文提供密碼。可以使用 'password' 資料流上下文選項設定密碼。

用法

  • compress.zlib://file.gz
  • compress.bzip2://file.bz2
  • zip://archive.zip#dir/file.txt

選項

封裝器摘要
屬性 支援
allow_url_fopen 限制
允許讀取
允許寫入 是(zip:// 除外)
允許附加 是(zip:// 除外)
允許同時讀寫
支援 stat() 否,請使用一般的 file:// 封裝器來取得壓縮檔案的狀態。
支援 unlink() 否,請使用一般的 file:// 封裝器來刪除壓縮檔案。
支援 rename()
支援 mkdir()
支援 rmdir()

另請參閱

新增註解

使用者貢獻的註解 2 則註解

lewa::cpan.org
7 年前
單行程式碼壓縮和解壓縮檔案

copy('file.txt', 'compress.zlib://' . 'file.txt.gz');

copy('compress.zlib://' . 'file.txt.gz', 'file.txt');
alvaro at demogracia dot com
13 年前
如何從 ZIP 檔案("./foo.zip" 內的 "bar.txt" 檔案)讀取項目的範例

<?php

$fp
= fopen('zip://./foo.zip#bar.txt', 'r');
if(
$fp ){
while( !
feof($fp) ){
echo
fread($fp, 8192);
}
fclose($fp);
}

?>

此外,顯然在 PHP/5.3.6 版本中,「zip:」包裝器不允許寫入。您可以參考 https://php.dev.org.tw/ziparchive-getstream 以取得更多資訊,因為底層程式碼可能相同。
To Top