Как перебирать и искать содержимое файлов в public / storage /? - PullRequest
0 голосов
/ 30 августа 2018

У меня есть набор текстовых файлов внутри 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
        │ ...
        └───

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Если вы хотите получить путь к public/storage, вам нужно позвонить public_path('storage').

Также вы можете использовать glob(), но это зависит от структуры вашей папки / файла.

Пример:

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

Это вернет массив всех файлов с расширением .txt в public/storage/.

Если эти файлы находятся в папках внутри public/storage, вам необходимо рекурсивно получить все эти файлы.

0 голосов
/ 30 августа 2018

Это должно работать так, как вы собираетесь проверять содержимое каждого файла:

$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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...