misaka / archive-tar
PHP的TAR归档读取器 - 支持 gz、bz2 和超过 2 GB 的文件
v1.1.0
2016-04-01 16:12 UTC
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-14 14:11:57 UTC
README
PHP中读取TAR归档的简单工具。支持大于PHP_INT_MAX大小的记录(略小于2 GB)。
仅支持USTAR格式。这应该是1988年后最常用的TAR格式。
通过检测文件扩展名,透明地支持Gz和bz2压缩。
安装
将以下内容添加到您的composer.json
要求中:"mishak/archive-tar": "dev-master"
。
示例
列出归档中的所有记录
$filename = 'archive.tar'; $reader = new Mishak\ArchiveTar\Reader($filename); $read->setBuffer(PHP_INT_MAX); $read->setReadContents(FALSE); foreach ($reader as $record) { print_r($record); }
打印所有文件记录及其内容
$filename = 'archive.tar'; $reader = new Mishak\ArchiveTar\Reader($filename); foreach ($reader as $record) { if (in_array($record['type'], array(\Mishak\ArchiveTar\Reader::REGULAR, \Mishak\ArchiveTar\Reader::AREGULAR), TRUE)) { echo $record['filename'], "\n"; echo $record['contents'], "\n"; } }
通过函数回调打印所有文件记录
这将产生与上一个示例完全相同的输出。
$filename = 'archive.tar'; $reader = new Mishak\ArchiveTar\Reader($filename); $lastRecord = NULL; $read->setReadContents(function ($record, $chunk, $left, $read) use ($lastRecord) { if (!in_array($record['type'], array(\Mishak\ArchiveTar\Reader::REGULAR, \Mishak\ArchiveTar\Reader::AREGULAR), TRUE)) { continue; } if (NULL === $lastRecord || $record['filename'] !== $lastRecord['filename']) { if (NULL !== $lastRecord) { echo "\n"; } echo $record['filename'], "\n"; } echo $chunk; if (!$left) { echo "\n"; } } }); foreach ($reader as $record) { // don't mind just walking thru... }