misaka/archive-tar

PHP的TAR归档读取器 - 支持 gz、bz2 和超过 2 GB 的文件

v1.1.0 2016-04-01 16:12 UTC

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...
}