在PHP中读取zip文件的最佳方法

在PHP中读取zip文件的最佳方法,php,zip,Php,Zip,文件获取内容(“zip:///a/b/c.zip“”正在返回NULL。如何在PHP5+中读取zip文件的解压缩内容?使用zip\u open和zip\u read函数执行此操作。 有关它的文档,请访问 查看内置的zip函数: 该zip://协议由PHP提供。检查phpinfo()输出是否已安装扩展。使用ZipArchive类 $zip = new ZipArchive; $zip->open('test.zip'); echo $zip->getFromName('filename.

文件获取内容(“zip:///a/b/c.zip“”
正在返回
NULL
。如何在PHP5+中读取zip文件的解压缩内容?

使用
zip\u open
zip\u read
函数执行此操作。 有关它的文档,请访问


查看内置的zip函数:

zip://
协议由PHP提供。检查
phpinfo()
输出是否已安装扩展。

使用
ZipArchive

$zip = new ZipArchive;
$zip->open('test.zip');
echo $zip->getFromName('filename.txt');
$zip->close();

我正在回答问题的第一部分,即使用file_get_contents方法 '文件\u获取\u内容('zip:///a/b/c.zip“”“通常,该方法用于读取zip文件中嵌套的一个特定文件。以便提取所有内容;其他人给出了很好的答案

我在windows和Linux上使用PHP7.2.34。我在d:\data保存了一个zip文件,这种语法在windows中有效。它会回显example1.py的内容,example1.py位于ZIP文件的“文件夹”中

可能还与zip文件的创建位置/创建方式有关。当我从PHP中创建zip文件时,内部分隔符是反斜杠,但当Windows创建zip文件时(通过使用Windows资源管理器中的“发送到压缩文件夹”功能),Windows在zip文件中使用Linux约定

这里需要进行更多测试,以了解zip文件中使用的是内部路径的分隔符

    <?php
    $str = file_get_contents('zip://d:/data/demo.zip#examples\\example1.py');
    echo $str;
    ?>


from phpinfo():Zip=>enabled Extension Version=>$Id:php_Zip.c,v1.1.2.38 2007/08/06 22:02:32 bjori Exp$Zip Version=>2.0.0 Libzip Version=>0.7.1注册的php流=>Zip、php、文件、数据、http、ftp、compress.bzip2、compress.zlib、https、,ftp您是否已检查您尝试打开的文件是否确实是有效的
.zip
文件?%%>文件test.zip test.zip:zip存档数据,至少v2.0以提取代码片段:$data=file\u get\u contents('zip:///path/to/file/test.zip,FALSE,NULL,0,1024);$data为NULL,我已验证为1。权限2。是否为正确的.zip格式。zip文件可以这样读取吗???忘了提到zip文件总是包含一个文件。我喜欢“ZipArchive”类。
如果($zip)
不起作用,你应该使用
如果(is_resource($zip))
。看见此外,答案中提供的链接不再可用。
    <?php
    $str = file_get_contents('zip://d:/data/demo.zip#examples\\example1.py');
    echo $str;
    ?>