php - 如何使用 RecursiveDirectoryIterator 忽略/排除文件夹?

标签 php

我正在使用 PharData 创建一个 tar 包。它工作正常,但它包含一个我不想要的文件夹。如何排除存档中的文件夹?

<?php
$dir = "/foobar/dir";
$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($dir)
);

$phar = new PharData('/mytar.tar');
$phar->buildFromIterator($iterator, $dir);
$phar->compress(Phar::GZ);
unlink(realpath('/mytar.tar'));

我想在存档中忽略的文件夹是 vendor (/foobar/dir/vendor)。

最佳答案

您可以使用 CallbackFilterIterator() 来过滤不需要的文件和文件夹(尚未测试):

<?php
$dir = "/foobar/dir";
$iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($dir)
);
$filterIterator = new CallbackFilterIterator($iterator , function ($file) {
    return (strpos($file, "vendor/") === false);
});
$phar = new PharData('/mytar.tar');
$phar->buildFromIterator($filterIterator, $dir);
$phar->compress(Phar::GZ);
unlink(realpath('/mytar.tar'));

关于php - 如何使用 RecursiveDirectoryIterator 忽略/排除文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20760538/

相关文章:

javascript - 根据复选框检查从另一个数组中删除数组

php - 何时在 Laravel 中使用 abort(404)?

php - 从下拉菜单选择中动态构建表单

php - 在数据库中加载图像增量计数器

php - 为什么这个 JSON 拒绝获得响应?并在curl http ://. ... response.json 命令上失败

javascript - 图片不会显示在 Wordpress 模板中

php - fatal error : Call to a member function getId() on null in doctrine

javascript - JavaScript 中的 PHP 代码

javascript - jQuery Ajax 请求不发送信息

javascript - 使用ajax时工作数据库功能不起作用