ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php – phar在创建tar存档时排除目录

2019-06-24 08:18:45  阅读:260  来源: 互联网

标签:php directory tar phar


我想使用内置的PharData类在PHP脚本中创建tar存档.

我希望tar存档代表一个目录,所以我想到使用PharData :: buildFromDirectory()来做到这一点.不幸的是,该目录也是一个git存储库,其中有一个.git文件夹,它比目录本身大得多.

因此,我需要从存档中删除该.git目录(理想情况下也是.idea目录…),因为它会不必要地膨胀它.

到目前为止我尝试了什么:

>使用正则表达式过滤目录:

$archive->buildFromDirectory("..", "@^(?!.git).+@");

哪个没用.
>使用PharData :: delete(),但不幸的是,它似乎只删除文件而不是目录.

那么,做我想做的最好的方法是什么?

解决方法:

你的正则表达式的问题是文件的完整路径匹配,而不仅仅是目录(basename).因此,您无法过滤掉.git目录本身.

使用字符类否定([^.] [^ g] [^ i] [^ t])也没有帮助,因为路径的某些部分与此正则表达式匹配,因此路径仍然匹配.

这意味着您只能使用正匹配.

您可以使用Phar::buildFromIterator,然后使用RecursiveFilterIterator过滤掉文件.
在那里,您可以定义自己正确过滤的匹配方法.

标签:php,directory,tar,phar
来源: https://codeday.me/bug/20190624/1276256.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有