我在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
│ ...
└───
这应该像您打算检查每个文件的内容一样工作:
$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_path('storage')
。
你也可以使用glob()
,但这取决于你的文件夹/文件结构。
例:
$files = glob(public_path('/storage') . '/*.txt');
这将返回.txt
中具有public/storage/
扩展名的所有文件的数组。
如果这些文件位于public/storage
内的文件夹中,则需要递归获取所有这些文件。