2014-11-04 3 views
10

Я пытаюсь прочитать содержимое файла по строкам с помощью Laravel. Однако я ничего не могу найти об этом.Прочитать содержимое файла с помощью Laravel

Должен ли я использовать функцию fopen или могу ли я сделать это с помощью функции File :: get()?

Я проверил API, но, похоже, нет функции для чтения содержимого файла.

+0

Там нет никаких нативные методы/функции в Laravel, которые будут делать это. Посмотрите на захват пакета, который обрабатывает файлы или как вы начали делать, сделайте это самостоятельно вручную. –

+0

Спасибо, я думал, что есть что-то, так как вы можете получить файл с файлом :: get ($ path). Тогда я разработаю свои собственные методы! – Cheskq

+1

Я тоже подумал, когда у меня возникла эта проблема. К сожалению, метод 'File :: get()' использует 'file_get_contents()' для возврата всего содержимого файла. –

ответ

17

Вы не можете использовать простой PHP?

foreach(file('yourfile.txt') as $line) { 
    // loop with $line for each line of yourfile.txt 
} 
+0

Вот что я делаю, мне просто интересно, есть ли функция Laravel для этого. – Cheskq

+11

Как Laravel мог сделать менее 1 строку? – KyleK

+0

Это должен быть принятый ответ. 'file()' возвращает содержимое файла в виде массива. 'File :: get' и' file_get_contents' возвращают содержимое в виде строки, после чего вам нужно проанализировать разделитель, чтобы попасть в массив. –

11

Вы можете использовать следующие для получения содержимого:

$content = File::get($filename); 

Который будет возвращать Illuminate\Filesystem\FileNotFoundException, если он не найден. Если вы хотите, чтобы принести что-то удаленный вы можете использовать:

$content = File::getRemote($url); 

который будет возвращать false если не найден.

Если у вас есть файл, вам не нужны специальные методы обработки данных для laravel. Теперь вам нужно работать с содержанием в php. Если вы wan't читать строки, которые вы можете сделать это @kylek описанным:

foreach($content as $line) { 
    //use $line 
} 
+4

no, '$ content' будет строкой, а не массивом – user151496

+1

Это не сработало для меня, потому что, как заметил Виктор, в $ content будет содержаться строка, а не массив. Я получаю «Недопустимый аргумент, предоставленный foreach()», когда я пытаюсь это сделать. –

+0

просто используйте ответ выше и сделайте начальный файл с файлом() –

1

Вы можете использовать

try 
{ 
    $contents = File::get($filename); 
} 
catch (Illuminate\Contracts\Filesystem\FileNotFoundException $exception) 
{ 
    die("The file doesn't exist"); 
} 
Смежные вопросы