2014-11-04 16 views
10

Ich versuche den Inhalt einer Datei Zeile für Zeile mit Laravel zu lesen. Allerdings kann ich nirgendwo etwas finden.Dateiinhalt mit Laravel lesen

Sollte ich die Funktion fopen verwenden oder kann ich das mit der Funktion File :: get() tun?

Ich habe die API überprüft, aber es scheint keine Funktion zu haben, den Inhalt der Datei zu lesen.

+0

Es gibt keine native Methoden/Funktionen in Laravel, die dies tun wird. Suchen Sie nach einem Paket, das Dateien verarbeitet, oder wenn Sie damit begonnen haben, machen Sie es manuell. –

+0

Danke, ich dachte es gäbe etwas, da du die Datei mit File :: get ($ path) bekommen kannst. Ich werde dann meine eigenen Methoden entwickeln! – Cheskq

+1

Das dachte ich auch, als ich dieses Problem vor einiger Zeit hatte. Leider verwendet die 'File :: get()' Methode 'file_get_contents()', um den gesamten Inhalt einer Datei zurückzugeben. –

Antwort

17

Können Sie nicht einfach PHP verwenden?

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

Das ist was ich tue, ich habe mich nur gefragt, ob es eine Laravel-Funktion dafür gibt. – Cheskq

+11

Wie Laravel könnte kürzer als 1 Linie tun? – KyleK

+0

Dies sollte die akzeptierte Antwort sein. 'file()' gibt den Inhalt der Datei als Array zurück. 'File :: get' und' file_get_contents' geben den Inhalt als String zurück, den Sie dann über ein Trennzeichen analysieren müssen, um in ein Array zu gelangen. –

11

können Sie die folgenden, um den Inhalt zu erhalten:

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

, die eine Illuminate\Filesystem\FileNotFoundException zurück, wenn sie nicht gefunden wird. Wenn Sie etwas holen wollen Remote können Sie:

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

Welche false zurück, wenn nicht gefunden.

Wenn Sie die Datei haben, benötigen Sie keine laravelspezifischen Methoden zum Umgang mit den Daten. Jetzt müssen Sie mit dem Inhalt in PHP arbeiten. Wenn Sie die Zeilen lesen wan't zu können Sie es beschrieben wie @kylek tun:

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

nein, '$ content' wird string sein, kein Array – user151496

+1

Das hat nicht funktioniert, weil, wie Victor darauf hinwies, der $ Inhalt eine Zeichenfolge enthält, kein Array. Ich bekomme ein "ungültiges Argument für foreach()", wenn ich das versuche. –

+0

Verwenden Sie einfach die obige Antwort und führen Sie die erste Datei mit Datei lesen() –

1

Sie

verwenden können
try 
{ 
    $contents = File::get($filename); 
} 
catch (Illuminate\Contracts\Filesystem\FileNotFoundException $exception) 
{ 
    die("The file doesn't exist"); 
} 
Verwandte Themen