如何使用PHP将bz2文件作为数组读取

时间:2011-09-26 04:10:59

标签: php arrays

有一个函数你可能知道gzfile“将整个gz文件读入一个数组”,你怎么能用bz2做同样的事情?谢谢!

1 个答案:

答案 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())