当前位置: 首页 > 知识库问答 >
问题:

读取zip存档中的php文件

岳俊雅
2023-03-14

我一直在尝试读取ZIP存档中的PHP文件。我编写了以下代码,它可以读取文本文档和回显而没有错误,但当我用PHP文件测试时,什么都没有出现。那么我可以做些什么来读取PHP文件而不提取呢?

<?php
$zip = zip_open("test.zip");
$filename= "test.php";

if (is_resource($zip))
{
while ($zip_entry = zip_read($zip))
{
    if (zip_entry_open($zip, $zip_entry) && zip_entry_name($zip_entry) == $filename)
    {
        echo "Name: " . zip_entry_name($zip_entry) . "<br />";
        echo "<p>";
        echo "File Contents:<br/>";
        $contents = zip_entry_read($zip_entry);
        echo "$contents<br />";
        zip_entry_close($zip_entry);
    }
}
zip_close($zip);
}

提前感谢!

共有2个答案

汪志业
2023-03-14

您可以使用流包装器在一行中直接从zip中读取文件,而无需将任何内容提取到磁盘。例如:

$str = file_get_contents('zip://test.zip#test.php');
关飞翔
2023-03-14

使用默认的zip\u read()php函数没有太多的资源,但是https://github.com/Ne-Lexa/php-zip库使在php中使用zip文件变得轻而易举,您应该去看看。

 类似资料:
  • 问题内容: 我有一个zip存档,其中包含一堆纯文本文件。我想解析每个文本文件的数据。到目前为止,这是我写的内容: 我需要一个RandomAccessFile来做到这一点吗?我在拥有ZipInputStream的地方迷路了。 问题答案: 不,您不需要。首先获取此zip文件条目的数据: 然后将其包装为(从二进制解码为文本)和a (一次读取一行): 然后像往常一样从中读取行。像往常一样将所有适当的位包装

  • 问题内容: 我需要在zip文件中读取单个文件“ test.txt”的内容。整个zip文件是一个非常大的文件(2gb),其中包含很多文件(10,000,000),因此,提取整个文件对我而言不是可行的解决方案。如何读取单个文件? 问题答案: 尝试使用包装器: 您也可以使用:

  • 在Eclipse中为我的XXXXClient(web服务)项目运行Maven安装时,我反复收到以下消息:“项目”XXXXClient“中的required Library:'x:/xxxx/xxxx/.m2/repository/javax/enterprise/CDI-API/1.0-sp4-redhat-4/CDI-API-1.0-sp4-redhat-4.jar'无法读取或不是有效的ZIP文

  • 在谈到这个问题之前,让我解释一下我做了什么,使我陷入了这个问题。 > 我在github上创建了一个帐户,并创建了一个名为Android的存储库。 然后我在windows 7中安装了github客户端。 然后打开这个客户端,提供身份验证并将存储库克隆到本地目录(此文件夹中包含文件夹)。 然后我转到我的Eclipse ADT并安装了EGit插件,如本文所述。也I 然后在Eclipse中右键单击我的项目

  • 我试图创建一个简单的java程序,从zip文件中读取并提取文件内容。Zip文件包含3个文件(txt、pdf、docx)。我需要阅读所有这些文件的内容,为此我正在使用ApacheTika。 有人能帮我实现这个功能吗。到目前为止,我已经试过了,但没有成功 代码片段

  • 问题内容: 我的用例要求我打开一个txt文件,例如abc.txt,该文件位于zip归档文件中,该归档文件包含以下格式的键值对: key1 = value1 key2 = value2 ..依此类推,每个键值对都位于新行中。我必须更改与某个键对应的一个值,然后将文本文件放回存档的新副本中。如何在Java中执行此操作? 到目前为止,我的尝试: 问题答案: 您几乎完全正确。一种可能的原因,该文件显示为已