有一个函数你可能知道gzfile“将整个gz文件读入一个数组”,你怎么能用bz2做同样的事情?谢谢!
答案 0 :(得分:2)
没有内置功能。</ p>
你可以做这样的事情(添加一些健全性检查等):
function bzfile($filename){
$p = popen('bunzip2 -c ' . $filename, 'r');
$a = array();
while($a[] = fgets($p);
return $a;
}
这假定安装了bunzip2二进制文件的类似unix的操作系统。它在您的文件上运行buznip2。 -c选项意味着“将未压缩的数据发送到stdout而不是影响磁盘上的文件。”该输出的行为类似于文件句柄,因此您可以在其上读取行。
编辑:an extension提供了一些内置的bz2功能,但遗憾的是,没有bzfile()。如果您的环境中有bzip2扩展,则可以重写以上内容:
function bzfile($file){
$fp = bzopen('foo.bz2','r');
$a = array();
while ($a[] = fgets($fp));
return $a;
}
这不需要unix环境或安装bunzip2二进制文件。
(注意:这都假设bzip文件是文本,不包含二进制数据,因为你想要替换file())