Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Laravel删除文件夹中除“placeholder.png”以外的所有文件_Php_Laravel_Laravel 5 - Fatal编程技术网

Php 使用Laravel删除文件夹中除“placeholder.png”以外的所有文件

Php 使用Laravel删除文件夹中除“placeholder.png”以外的所有文件,php,laravel,laravel-5,Php,Laravel,Laravel 5,所以我想把这一切都弄清楚。我在下面看到了这篇关于如何删除目录中的所有文件的文章,但是我想从删除中排除我的占位符图像。我还没有找到我想要的答案,所以这将是一个简短的问题 看看这里的SO问题:接受要删除的文件数组。因此,一种可能的解决方案是使用通配符选择器列出目录,然后从数组中筛选出排除列表 $filesForDelete = array_filter(glob("path/to/files/*"), function($file) { return false === strpos($fi

所以我想把这一切都弄清楚。我在下面看到了这篇关于如何删除目录中的所有文件的文章,但是我想从删除中排除我的占位符图像。我还没有找到我想要的答案,所以这将是一个简短的问题

看看这里的SO问题:

接受要删除的文件数组。因此,一种可能的解决方案是使用通配符选择器列出目录,然后从数组中筛选出排除列表

$filesForDelete = array_filter(glob("path/to/files/*"), function($file) {
    return false === strpos($file, 'placeholder.png');
});

Storage::delete($filesForDelete);
当然,您的过滤器表达式可能会变得更好、更广泛,或者只是以许多其他方式执行相同的操作

例如,您可以创建以下帮助器函数:

function deleteAllButFile($exclude)
{
    $filesForDelete = array_filter(glob("path/to/files/*"), function($file) use ($exclude) {
        return false === strpos($file, $exclude);
    });
    Storage::delete($filesForDelete);
}

// Call it like
deleteAllButFile('placeholder.png');

或者你喜欢的其他方式。根据你的想象。

我明天下班后会试试这个。如果我能成功地实现它,你一定会得到我的答案和支持!谢谢你抽出时间!另外,也许您也可以帮助回答这个问题:您可以应用检查目录中是否存在placeholder.png,然后除了全部删除之外,您只需使占位符图像的名称唯一即可。