如何在public / storage /中迭代和搜索文件内容?

问题描述 投票:0回答:2

我在public/storage/里面有一组文本文件,我需要搜索他们的内容,我试图定制这个answer在Laravel工作,但没有成功

public function search($query)
{
    $dir = new \DirectoryIterator(public_path('public'));

    foreach ($dir as $file) {
        return $file;
        $content = file_get_contents(public_path($file));
        if (strpos($content, $query) !== false) {
            return 'yes';
        } else {
            return 'no';
        }
    }
}

我相信代码的问题是我不知道Laravel如何访问路径。


Laravel中的文件结构:

project
│
└───public
    │
    └───storage
        │ 
        │ file1.txt
        │ file2.txt
        │ ...
        └───
laravel
2个回答
3
投票

这应该像您打算检查每个文件的内容一样工作:

$dir = new \DirectoryIterator(public_path('storage'));

foreach ($dir as $file) {
    if ($file->isFile()) {
        $content = file_get_contents($file->getRealPath());

        if (str_contains($content, $query)) {
            return 'yes';
        }
    }
}

return 'no';

0
投票

如果你想获得public/storage的路径,你需要调用public_path('storage')

你也可以使用glob(),但这取决于你的文件夹/文件结构。

例:

$files = glob(public_path('/storage') . '/*.txt');

这将返回.txt中具有public/storage/扩展名的所有文件的数组。

如果这些文件位于public/storage内的文件夹中,则需要递归获取所有这些文件。

© www.soinside.com 2019 - 2024. All rights reserved.