在laravel的特定文件夹中搜索特定文件名

gev0vcfq  于 2023-01-14  发布在  其他
关注(0)|答案(2)|浏览(152)

所以,我基本上要做的是在storage_path(“app/public/session”)中搜索所有以“dm”开头或以“.tmp”结尾的文件。
我已经尝试了File::allFiles()和File::files(),但我得到的是该会话文件夹中的所有文件,我不知道如何做到这一点。我可以在这里找到有关如何清空文件夹的问题,但这不是我要找的。谢谢。

bis0qfac

bis0qfac1#

请尝试以下代码:

$files = File::allFiles(storage_path("app/public/session"));
$files = array_filter($files, function ($file) {
    return (strpos($file->getFilename(), 'dm') === 0) || (substr($file->getFilename(), -4) === '.tmp');
});

也可以像这样使用glob函数:

$files = array_merge(
    glob(storage_path("app/public/session/dm*")),
    glob(storage_path("app/public/session/*.tmp"))
);
knpiaxh1

knpiaxh12#

在Laravel中,你可以使用File facade的glob()方法来搜索与特定模式匹配的文件,glob()函数根据libc glob()函数使用的规则来搜索与指定模式匹配的所有路径名,这与常见shell使用的规则类似。
您可以使用glob()方法在“app/public/session”目录中搜索以“dm”开头或以“.tmp”结尾的文件,如下所示:

use Illuminate\Support\Facades\File;

$storagePath = storage_path("app/public/session");

// Find files that start with "dm"
$files = File::glob("$storagePath/dm*");

// Find files that end with ".tmp"
$files = File::glob("$storagePath/*.tmp");

您还可以使用?和[]通配符(例如,?匹配任何单个字符,[]匹配方括号之间字符集中的一个字符)来搜索与更具体模式匹配的文件,如下所示:

// Find files that starts with "dm" and ends with ".tmp"
$files = File::glob("$storagePath/dm*.tmp");
Note that, File::glob() method return array of matched path, you can loop and see the files or use it according to your needs.

相关问题