使用php仅从zip文件中检索文件夹名称?

2024-02-16

我正在尝试从 zip 文件中检索文件夹名称。 我写了这个简单的函数:

<?php
class zipadmin{
    private $filename ;
    private $folder ;
    public function __construct($filename,$folder){
        $this->zip = new ZipArchive;
        $this->file = $filename ;
        $this->folder = $folder ;
    }
    public function listzip(){
    if ($this->zip->open($this->file) == TRUE) {
        $info = $this->zip->statIndex(0);
        $output = str_replace('/','',$info['name']);
        return $output;
        }
    }
}

问题是,如果 zip 文件夹包含未包含在文件夹内的其他文件,则会返回所有文件名。 我需要它仅返回文件夹名称并丢弃任何文件名。


你可以尝试检查一下什么时候$info['crc']等于零。

class zipadmin{

  private $file;
  private $folder;
  private $zip;

  public function __construct($filename, $folder) {
    $this->zip = new ZipArchive;
    $this->file = $filename ;
    $this->folder = $folder ;
    }

  public function listzip() {
    $res = false;
    if ($this->zip->open($this->folder . $this->file) == TRUE) {
      $i = 0;
      while ($info = $this->zip->statIndex($i)) {
        if ($info['crc'] == 0 && preg_match('#^[^/]*?/$#', $info['name']))
          $res[] = preg_replace('#^([^/]*?)/$#', '$1', $info['name']);
        $i++;
        }
      }
    return $res;
    }

}

使用示例:

$z = new zipadmin('test.zip', './'); // test.zip in my example is in same folder
print_r($z->listzip());

Output(仅限根目录数组):

Array
(
    [0] => folder1
    [1] => folder2
    [2] => folder3
    [3] => folder4
)

In my test.zip存档 我的存档根目录和 4 个目录中只有几个文件folder1, folder2, folder3 and folder4其中包含一些文件和子目录。针对没有文件夹的存档运行方法返回布尔值false.

Update:

  • 修复了正则表达式模式以匹配第一个斜杠之前的所有内容/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用php仅从zip文件中检索文件夹名称? 的相关文章

  • 使用来自另一个数据库的选择查询更新 mysql 表

    我有两个数据库 我想用另一个数据库表中的值更新一个表 我正在使用以下查询 但它不起作用 UPDATE database1 table1 SET field2 database2 table1 field2 WHERE database1 t
  • MySQL 和 PHP 参数 1 作为资源

    好吧 当我运行下面提到的代码时 PHP 向我抛出此错误 在日志中 Error mysql num rows 期望参数 1 为资源 第 10 行 place 中给出的字符串 9 11号线 queryFP SELECT FROM db coun
  • 如何仅删除页面的自动段落格式,而不删除帖子的自动段落格式(WordPress)

    我已经熟悉这个在 WordPress 中删除自动段落格式的小技巧 remove filter the content wpautop remove filter the excerpt wpautop 但是添加这个函数 php删除整个网站的
  • 如何在 CakePHP 中“验证”人名?

    我有一个 PHP 脚本 应该检查 有效 的人名 但最近破解了带有空格的名称 因此我们向验证器添加了空格 除了这样做之外 有没有办法向 CakePHP 的验证器添加黑名单以阻止所有 无效 字符 而不是允许 有效 字符 注意 我 通常 知道如何
  • 解析错误:语法错误,意外的 T_RETURN [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 遇到这个问
  • 收到警告“标头不能包含多个标头,检测到新行”

    我正在用 oops 进行编码 以便用 PHP 上传图像 但是提交图片后却出现警告 标题不能包含多个标题 检测到新行 下面是我的函数 它给出了错误 public function ft redirect query if REQUEST UR
  • 无法在jspdf中加载多个图像

    我正在尝试加载动态生成的多个图像 我想将这些图像转换为 PDF 格式 HTML 代码如下
  • 在 Laravel 中的编辑表单上获取选定选项

    我的网站订单有一个可编辑的表单 并且有以下字段 User quantity note status 我在此表单中还有其他选项 但只有这些字段对我来说很重要 以便能够获取默认值 例如 我希望能够查看用户默认订购的数量 然后我可以更改它或保留它
  • php基于onclick函数输入日期类型

    用户选择日期 月份和年份 然后按一个按钮 根据他选择的日期向他显示数据库的值 不知道代码问题出在哪里
  • div 中的文本字符有限,添加“阅读更多”链接并在单击链接时显示所有字符

    我有一个 div 里面有文本 使用 PHP 和 MySQL 显示 结构如下 div class description p Here is a lot of text p div 我想在 p 标签内的文本超过 100 个字符时显示 阅读更多
  • Ajax文件上传

    我想使用 Ajax 和 php 上传文件 我有一个表格
  • 如何从脚本中创建新的 Joomla 用户帐户?

    我们正在为 Joomla 创建一个 XML API 允许合作伙伴网站在我们的网站上为其用户创建新帐户 我们已经创建了一个独立的 PHP 脚本来处理和验证 API 请求 但现在我们需要实际创建新帐户 我们最初只想进行 CURL 调用来提交注册
  • 纯基于网络的版本控制系统

    我的托管服务当前不允许在其服务器上运行 允许 svn git cvs 我真的希望能够将我的开发计算机上的当前源代码与我的生产服务器 同步 我正在寻找一个纯php python ruby版本控制系统 不只是一个client对于版本控制系统 不
  • 如何在CentOS 5.3上安装php-mongodb?

    我已经在我的 VPS 上安装了 mongoDB 效果很好 现在我想安装 php 驱动程序以使 php 与 mongoDB 一起工作 我跟着蒙戈安装 http www php net manual en mongo installation
  • 合并 2 个数组并合并数字键的结果

    我有 2 个数组 我希望通过每个数字键将其中合并 分组在一起 例如 Array1 2009 gt 131 2008 gt 940 2007 gt 176 2006 gt 1 Array2 2008 gt 9 2007 gt 3 我希望输出是
  • php oracle客户端oci8安装出现什么问题

    我尝试了安装 PHP Oracle 客户端的所有过程 1 我安装了客户端版本8和32位 2 我在php ini中取消了oci的注释 3 重新启动Wamp 4 不确定是否真的安装 但我在 php ini 中得到了引用 5 但仍然无法连接 泰汉
  • PHP Intl 扩展线程安全吗?

    我一直在阅读有关 PHP 中的语言环境的内容 看起来setlocale 线程有问题 我对线程不太熟悉 文档提到它不是线程安全的 我想让我的项目能够处理某些数字格式 并且 Intl 扩展似乎很有趣 http php net manual en
  • PHP 共享标头而不使用服务器端脚本?

    到目前为止我总是通过 PHP 解决简单的问题 您有一个包含页眉 菜单 页脚和内容字段的网站 每个页面的页眉 菜单和页脚通常是相同的 在没有 PHP 或任何其他服务器端语言的情况下 如何使页眉 菜单和页脚数据仅存在于一个文件中 例如 您不会有
  • 点击 %40 变为 %2540

    当单击包含 符号的链接时 该网址给我 40 这就是我想要的 但是一旦我点击它 一秒钟后它就在我点击后变成了 2540 单击是在电子邮件内 然后定向到网站 其中 40 更改为 2540 我怎样才能让它停止变化 它现在得到这样的参数 email
  • 通过 Sparkpost 发送 iCal 邀请

    我正在尝试使用 SparkPost 通过电子邮件以附件形式发送日历邀请 但收到电子邮件后邀请不会打开 我使用两个文件 calendarinvite php 来创建邀请 使用 Sendemail php 来发送电子邮件 calendarinv

随机推荐

  • wglShareLists 失败并出现错误 6:ERROR_INVALID_HANDLE 句柄无效

    我尝试在两个类之间共享 HPBUFFERARB TGLForm 和 TGLForm2 我尝试过 FBO 但有一个旧的 Borland Builder 6 版本 我无法使用 FBO 进行管理 我的目标是在两个 openGL 窗口中显示相同的缓
  • CSS 浮动页脚

    我想制作一个保留在可视窗口底部的页脚 除非当您调整窗口大小时它会与内容相抵触 我试过 底部 0 位置 绝对 但是当窗口较小时 页脚会妨碍 我相信这会做你想要的 CSS 布局 100 高度 包含页眉和页脚 http www xs4all nl
  • 按组顺序填充 NA 值

    我正在尝试填充数据集中的一些值 我的数据的简化版本如下 gt example df Date GROUP value 157 2018 01 31 10180 3 464 158 2018 02 28 10180 3 413 159 201
  • 将 Javascript 应用程序转换为 Windows 应用程序

    除了Adobe Air还有其他解决方案吗 我听说 V8 有点东西 只是现在没有时间 用另一种语言编写整个应用程序 然后编写 2 倍以上的代码 也许你可以使用jsc 从命令行编译 JScript 代码 http msdn microsoft
  • 如何在 Azure 中允许 URL 编码路径段

    我有一个在 Azure 中运行的 ASP NET 6 MVC 应用程序 我有一个控制器 其动作如下 HttpDelete Route image url public async Task
  • 使用柏林噪声来创造闪电?

    实际上 我有几个与主题标题中给出的主题相关的问题 我已经在我的应用程序中使用 Perlin 函数创建闪电 但我对我的实现并不完全满意 以下问题基于初始和改进的 Perlin 噪声实现 为了简化问题 我们假设我通过使用 1D Perlin 函
  • 我可以有两个 Fancybox 2.0 实例吗?

    我在我的网站上安装了 Fancybox 2 0 稍加修改使其看起来像 Facebook 图像预览框 我想要有 Fancybox 的第二个 实例 但它的定位不同 我的图像预览 Fancybox 当前实例 应距顶部 20 像素 目前 但我的共享
  • 使用 jquery 根据 4 个输入的总和设置数字输入最大值

    我有 4 个输入字段 我需要所有字段的总数不超过 100 我想设置要更改的字段的最大值 我一直在尝试调整 keyup 上的值 然后将其他字段的总和与当前字段的总和相区别并设置最大值 似乎工作了一段时间然后就停止了 JSfiddle 示例 h
  • Docker 添加当前目录中的每个文件

    我有一个简单的 Web 应用程序 我想将其放置在 docker 容器中 角度应用程序存在于frontend 文件夹 该文件夹位于application folder 当 Dockerfile 位于application 文件夹 内容如下 F
  • 有没有一种简单的方法可以从 python 中的无空格句子生成可能的单词列表?

    我有一些文字 s Imageclassificationmethodscan beroughlydividedinto two broad families of approaches 我想将其解析为单独的单词 我很快地研究了附魔和nltk
  • Pytorch 0.4.0:可以通过三种方式在 CUDA 设备上创建张量。他们之间有什么区别吗?

    我第三条路失败了 t3仍在CPU上 不知道为什么 a np random randn 1 1 2 3 t1 torch tensor a t1 t3 to torch device cuda t2 torch tensor a t2 t2
  • 在 php 中为多个图像上传创建缩略图时出错

    我使用以下代码上传 重命名 压缩 创建缩略图一切正常 最近我注意到在创建缩略图时 它还会为以前上传的图像创建缩略图图像的新副本 也为上传的图像创建缩略图 Problem 提交表单后 它会生成用于上传图像和已上传图像 较旧版本中存在的图像文件
  • 无法加载文件或程序集“Oracle.DataAccess”64 位 ODP.NET

    我在用ODP NET在我的 asp net 项目中 以便应用程序能够与 Windows 2008 服务器 32 位 上的 Oracle 11 g Express 进行通信 在开发机器上 我使用的是 Windows 7 32 位 我在开发计算
  • 未找到特征“Spatie\MediaLibrary\HasMedia\HasMediaTrait”

    它显示错误 无法获取 HasMedia 红色字体 的命名空间和 HasMediaTrait 的未定义类 第 16 行 有什么想法吗 None
  • 查找元素彼此相距最远的子集

    我有一个面试问题 我似乎无法弄清楚 给定一个大小为 N 的数组 找到大小为 k 的子集 使得子集中的元素彼此相距最远 换句话说 最大化元素之间的最小成对距离 Example Array 1 2 6 10 k 3 answer 1 6 10
  • 将 HTML 表解析为 CSV 的最佳方法

    我必须从现有网站上获取一些产品数据并将其放入数据库中 数据全部采用 HTML 表格格式 型号是唯一的 但每个产品可以有任意数量的不同属性 因此我需要解析的表格都有不同的列和标题 table tr td Model No td td Weig
  • 在 html 页面上显示命令行输出

    我正在构建一个网络应用程序 它在终端上运行某些命令并将结果显示回网络应用程序上 我能够使用 child process exec 运行命令并获取我面临的问题的结果 同时将其显示在 html 页面上 I want something like
  • ExtJs 4 组合框缺少配置选项hiddenName

    我正在尝试创建一个 ExtJs 版本 4 ComboBox 它将发布 valueField 而不是 displayValue 之前的版本是在 ComboBox 的配置中设置 hiddenName 选项 但我似乎无法在 v 4 或等效版本中找
  • 两个位置之间不显示折线,但显示时间和距离

    注意 抱歉我的英语不好 因为英语不是我的母语 我为此使用了谷歌翻译 我正在开发一个 Android 地图应用程序 用户可以在其中找到朋友的当前位置 为了存储当前位置 我使用 Firebase 实时数据库 在 Lalit Singh 之前的帮
  • 使用php仅从zip文件中检索文件夹名称?

    我正在尝试从 zip 文件中检索文件夹名称 我写了这个简单的函数