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

Laravel 如何在public/storage/中迭代和搜索文件内容?,laravel,Laravel,我在public/storage/中有一组文本文件,我需要搜索它们的内容,我尝试将其定制为在Laravel中工作,但没有成功 public function search($query) { $dir = new \DirectoryIterator(public_path('public')); foreach ($dir as $file) { return $file; $content = file_get_contents(public

我在
public/storage/
中有一组文本文件,我需要搜索它们的内容,我尝试将其定制为在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
        │ ...
        └───

这应该按照您希望检查每个文件内容的方式进行:

$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';

这应该按照您希望检查每个文件内容的方式进行:

$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';

如果要获取到
public/storage
的路径,需要调用
public\u path(“storage”)

您也可以使用,但这取决于您的文件夹/文件结构

例如:

$files = glob(public_path('/storage') . '/*.txt');
这将返回在
public/storage/
中具有
.txt
扩展名的所有文件的数组


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

如果要获取到
公共/存储的路径,需要调用
公共路径(“存储”)

您也可以使用,但这取决于您的文件夹/文件结构

例如:

$files = glob(public_path('/storage') . '/*.txt');
这将返回在
public/storage/
中具有
.txt
扩展名的所有文件的数组


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

您的存储目录中是否有其他文件?尝试读取每个文件似乎不是一个好主意。你能包括你的文件结构吗?@Devon是的,还有其他文件,但我的计划是将文本文件放在一个专用的文件夹中directory@IvankaTodorova我添加了Laravel
public/storage
的文件结构,您的存储目录中还有其他文件吗?尝试读取每个文件似乎不是一个好主意。你能包括你的文件结构吗?@Devon是的,还有其他文件,但我的计划是将文本文件放在一个专用的文件夹中directory@IvankaTodorova我添加了Laravel
public/storage
的文件结构。返回字符串是一种不好的做法。@IvankaTodorova,这只是为了测试而添加的,OP可能需要完整的文件内容或true/false。返回字符串是一种不好的做法。@Ivankatorova,这只是为了测试而添加的,OP可能需要完整的文件内容或true/false。