使用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文件中检索文件夹名称? 的相关文章

  • PayPal 网关已拒绝请求。安全标头无效(#10002:安全错误 Magento

    在 magento 中增加 PayPal 预付款 我已填写 magento admin 中的所有凭据 但是当我进入前端并单击 pay pal 按钮时 它给出了 PayPal 网关已拒绝请求 安全标头无效 10002 安全错误 我用谷歌搜索了
  • 让我的函数访问外部变量

    我外面有一个数组 myArr array 我想让我的函数访问其外部的数组 以便它可以向其中添加值 function someFuntion myVal some processing here to determine value of m
  • MySQL:计算日期/时间之间的差异 - 仅在周一至周五“工作周”期间

    我需要计算开始日期 时间和结束日期 时间之间的差异 但是 我只想在 5 天的工作周内执行此操作 不包括周六 周日 做这个的最好方式是什么 我的想法是 从日期开始 我必须获取星期几 如果是工作日 那么我将添加到累加器中 如果不是 那么我不会添
  • 如何在收到电子邮件时实时解析电子邮件

    我需要构建一个电子邮件解析脚本 该脚本将解析进入收件箱的电子邮件并将内容转储到数据库中 同时发出包含从电子邮件解析的详细信息的curl 请求 目前 我非常专注于实现如何在收件箱中收到电子邮件时实时解析电子邮件的部分 有没有办法设置触发器来执
  • Facebook 错误“验证验证码时出错”

    非常奇怪的错误 我用基德http developers facebook com docs authentication http developers facebook com docs authentication 所以我创建了对fb的
  • 学说 dbal querybuilder 作为准备好的语句

    我正在尝试创建一个 Doctrine DBAL 查询生成器对象并在其中设置一个参数 使用 postgres db dbal 2 3 4 原则 connection this gt em gt getConnection qb connect
  • Nusoap“SOAP-ENV:Xml 为空,未解析”消息

    我正在尝试使用 nusoap 实现一个简单的网络服务 服务器
  • PHP7.4中如何让PHPUnit测试属性初始化?

    采用 PHP7 4 类型化属性时 我们的应用程序中的代码样式更改之一是从 if null object gt value to if empty object gt value 即使类型化属性可为空 第一个 if 语句也会抛出Error 下
  • 在 Symfony3 中覆盖 Doctrine2 类型

    我想用Carbon http carbon nesbot com docs 我的 Symfony 3 2 应用程序中的对象而不是 SPL DateTime 对象 我发现了一组 DoctrineExtension 类here https gi
  • 如何使用 PHP 从 Web 根目录外部提供文档?

    为了安全起见 我将一组文件和文件夹移动到 apache 服务器上的 Web 根目录之外 然后动态地为它们提供服务 这似乎比两种选择更好 让它们可以通过网络访问 只需创建一个 php 登录页面 该页面会添加到每个文件的前面 问题是它们并不都是
  • 最好的 php DOM 2 数组函数是什么?

    我想解析xml文件 到目前为止 我发现最好的方法是使用 DOMDocument 类 示例 xml 字符串
  • 如何将选择下拉列表转换为多个复选框?

    我想将下面的下拉代码转换为多选复选框值 我正在使用 WordPress 下面的代码来自第三方网站 我无权访问该第三方网站 因此 通过此功能 我可以在下拉菜单中提供多选选项 div class facilities span class la
  • SSL 和会话劫持/固定

    快问 SSL 是否完全防止会话劫持 固定 谢谢 不可以 例如 在以下情况下可能会发生劫持 被黑客入侵的 CA 根签署无效证书 该证书可用于发起中间人攻击 被黑客攻击的域名所有者电子邮件收件箱使黑客有可能购买经过域名验证的证书 错误的密钥策略
  • 如何从谷歌地图中的纬度和经度获取地址位置? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 所以我有纬度和经度就像44 4647452 and 7 3553838 我需要获得如下地址 米兰 意大利 str 肯尼迪 89 我怎样才能
  • 无法创建可锁定文件 - Laravel 8 和 PHP 8

    我被困在 Laravel 项目中 我已经使用 Laravel 很多年了 但从未发生过这种情况 我正在使用 Vagrant 一如既往 并且只在 PHP 8 中发生这种情况 使用 php 7 X 的其他项目不会发生这种情况 USER 和 GRO
  • Python 结构的 PHP 替代品

    我很高兴在我的 Python 项目中使用 Fabric 进行部署 现在我正在从事一个更大的 PHP 项目 想知道是否有类似 PHP 的 Fabric 之类的东西 唔 为什么这有关系 Fabric 只是 python 脚本 所以它与项目语言无
  • 合并两个 MYSQL SELECT 查询[重复]

    这个问题在这里已经有答案了 可能的重复 如何将两个 Post Category 表 MYSQL SELECT 查询合并为一个 https stackoverflow com questions 12972130 how to combine
  • PHP Amazon SDK,S3 存储桶访问被拒绝

    我第一次尝试使用 PHP AWS SDK aws aws sdk php 3 19 来使用 S3 我创建了一个存储桶 myfirstbucket jeremyc 我制定了一项政策 Version 2012 10 17 Statement E
  • WordPress:wpdb->插入与wpdb->准备(wpdb->查询(“INSERT

    我想知道 WordPress 的插入功能是否也向数据添加斜杠 如果没有 准备查询方法似乎可以更好地防止 SQL 注入 我尝试在 codex api 中查找问题 然而 它似乎没有记录 谢谢 这个问题有点老了 自从提出这个问题以来 法典可能已经
  • PHP:使用 UTF-8 的 strpos 和 substr

    假设我有一个很长的 UTF 8 编码字符串 并说我想检测是否 var存在于该字符串中 假设 var始终是简单的字母或 ASCII 字符数字 例如 hello123 我不需要使用mb strpos or iconv strpos正确的 因为只

随机推荐

  • 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 文件中检索文件夹名称 我写了这个简单的函数