file_get_contents("zip:///a/b/c.zip")
đang trả lại NULL
. Làm thế nào tôi có thể đọc nội dung giải nén của một tệp zip trong PHP 5+?Cách tốt nhất để đọc tệp zip trong PHP
Trả lời
Sử dụng các chức năng zip_open
và zip_read
để thực hiện. Documentation với nó bạn có thể tìm thấy ở http://pl2.php.net/manual/en/function.zip-read.php
<?php
/**
* This method unzips a directory within a zip-archive
*
* @author Florian 'x!sign.dll' Wolf
* @license LGPL v2 or later
* @link http://www.xsigndll.de
* @link http://www.clansuite.com
*/
function extractZip($zipFile = '', $dirFromZip = '')
{
define(DIRECTORY_SEPARATOR, '/');
$zipDir = getcwd() . DIRECTORY_SEPARATOR;
$zip = zip_open($zipDir.$zipFile);
if ($zip)
{
while ($zip_entry = zip_read($zip))
{
$completePath = $zipDir . dirname(zip_entry_name($zip_entry));
$completeName = $zipDir . zip_entry_name($zip_entry);
// Walk through path to create non existing directories
// This won't apply to empty directories ! They are created further below
if(!file_exists($completePath) && preg_match('#^' . $dirFromZip .'.*#', dirname(zip_entry_name($zip_entry))))
{
$tmp = '';
foreach(explode('/',$completePath) AS $k)
{
$tmp .= $k.'/';
if(!file_exists($tmp))
{
@mkdir($tmp, 0777);
}
}
}
if (zip_entry_open($zip, $zip_entry, "r"))
{
if(preg_match('#^' . $dirFromZip .'.*#', dirname(zip_entry_name($zip_entry))))
{
if ($fd = @fopen($completeName, 'w+'))
{
fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));
fclose($fd);
}
else
{
// We think this was an empty directory
mkdir($completeName, 0777);
}
zip_entry_close($zip_entry);
}
}
}
zip_close($zip);
}
return true;
}
// The call to exctract a path within the zip file
extractZip('clansuite.zip', 'core/filters');
?>
nhìn vào xây dựng trong các chức năng zip: http://php.net/manual/en/book.zip.php
Tôi thích lớp "ZipArchive". –
Giao thức zip://
được cung cấp bởi ZIP extension của PHP. Kiểm tra đầu ra phpinfo()
của bạn xem tiện ích có được cài đặt hay không.
từ phpinfo(): Zip => kích hoạt Version Extension => $ Id: php_zip.c, v 1.1.2.38 2007/08/06 22:02:32 bjori Exp $ Zip phiên bản => 2.0. 0 Phiên bản Libzip => 0.7.1 Dòng PHP đã đăng ký => zip, php, tệp, dữ liệu, http, ftp, compress.bzip2, compress.zlib, https, ftps – Sam
Bạn đã kiểm tra xem tệp bạn có cố gắng mở thực sự là một tệp '.zip' hợp lệ? – joschi
%> tệp test.zip test.zip: Dữ liệu lưu trữ zip, ít nhất là v2.0 để trích xuất – Sam
sử dụng ZipArchive
lớp
$zip = new ZipArchive;
$zip->open('test.zip');
echo $zip->getFromName('filename.txt');
$zip->close();
- 1. Đọc tệp zip bên trong tệp zip
- 2. Ruby - cách đơn giản nhất để đọc tệp văn bản bên trong tệp zip
- 3. Cách tốt nhất để kiểm tra tệp để xem tệp zip của nó là gì?
- 4. Đọc CSV từ bên trong Tệp Zip
- 5. Hợp nhất nhiều tệp zip vào một tệp zip duy nhất trong Python
- 6. Cách tốt nhất để xử lý XML lớn trong PHP
- 7. Đọc tệp xlsx bằng PHP
- 8. Cách tốt nhất để mã hóa mật khẩu trong PHP
- 9. Dòng Zip trong PHP
- 10. cách tốt nhất để lấy khóa trong php
- 11. Nhận ngoại lệ "Không thể đọc đó dưới dạng tệp Zip" khi cố gắng lấy luồng từ Tệp zip bên trong (một Zip trong một Zip khác)
- 12. Plugin mã zip tốt nhất cho Ruby
- 13. Cách tốt nhất để đọc tệp văn bản được phân tách bằng tab trong C#
- 14. Cách tốt nhất để đọc tệp trong ứng dụng dựa trên EventMachine là gì?
- 15. Cách tốt nhất để đọc một tệp lớn thành một mảng byte trong C#?
- 16. PHP đọc tệp cookie
- 17. Cách tốt nhất để đọc đầu ra của lệnh shell
- 18. Cách tốt nhất để xác thực trong PHP
- 19. Cách tốt nhất để nén chuỗi trong PHP
- 20. Cách tốt nhất để so sánh với 0 trong PHP?
- 21. lỗi tệp zip khi đọc trong url https
- 22. Cách tốt nhất để gọi các lớp .NET từ PHP?
- 23. Làm cách nào để đọc tệp từ tệp Zip tới bộ nhớ bằng Java?
- 24. Đọc tệp .csv trong php
- 25. Cách tốt nhất để nhận dạng một loại tệp trong php
- 26. Mô-đun Zip Python tốt nhất để xử lý các tệp lớn là gì?
- 27. Cách đọc tệp trực tiếp từ tệp .zip mà không cần giải nén trong android
- 28. Cách tốt nhất để đọc một Tệp vào Danh sách <string>
- 29. Cách tốt nhất để chuyển mảng giữa PHP và Javascript
- 30. Tải xuống tệp .zip chạy tệp bị lỗi php
'nếu ($ zip)' không làm việc, bạn nên sử dụng 'nếu (is_resource ($ zip))'. Xem ['zip_open'] (http://php.net/manual/fr/function.zip-open.php). Ngoài ra, liên kết được cung cấp trong câu trả lời không còn nữa. – kjaquier