PHP Conference Japan 2024

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 年前
用于 gzip 和 ungzip 文件的单行代码

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.net/ziparchive-getstream 以了解更多信息,因为底层代码可能相同。
To Top