[英]How can I read a .tar.gz file with PHP?
我正在建立一個供人們上傳PHP中的.tar(和.tar.gz,.tar.bz2,.zip等)文件的系統。 上載文件是可以的,但是在上載檔案之后,我想列出檔案中包含的文件。
有人可以推薦一個可以讀取文件存檔的優秀PHP庫嗎?
我在Pear上找到了File_Archive ,但是幾年來沒有更新。 ZipArchive非常適合.zip文件,但是我需要一些可以處理更多文件類型的文件。
更新我在RHEL6,PHP 5.2和Apache 2.2上運行。
// Example: list files
$archive = new PharData('/some/file.tar.gz');
foreach($archive as $file) {
echo "$file\n";
}
這甚至適用於phar://
流包裝器:
$list = scandir('phar:///some/file.tar.gz');
$fd = fopen('phar:///some/file.tar.gz/some/file/in/the/archive', 'r');
$contents = file_get_contents('phar:///some/file.tar.gz/some/file/in/the/archive');
以下代碼讀取.gz zip文件中的文件
<?php
$z = gzopen('zipfile.gz','r') or die("can't open: $php_errormsg");
$string = '';
while ($line = gzgets($z,1024)) {
$string .= $line;
}
echo $string;
gzclose($z) or die("can't close: $php_errormsg");
?>
請注意 ,您需要啟用php的zip擴展名才能使此代碼正常工作。
不要嘗試自己構建它。 使用現有的類(例如http://pear.php.net/package/Archive_Tar)為您處理該類。
我認為第一個答案行不通。 否則它對我不起作用。 foreach時,您無法讀取文件內容。 我在下面給出我的工作代碼。
$fh = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('phar:///dir/file.tar.gz'),
RecursiveIteratorIterator::CHILD_FIRST
);
foreach ($fh as $splFileInfo) {
echo file_get_contents($splFileInfo->getPathname());
}
這適用於gz,zip,tar和bz文件。
使用zlib擴展
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.