Du liest:
PHP file_get_contents: So kannst du Dateien auslesen

PHP file_get_contents: So kannst du Dateien auslesen

von Patrick
14.05.2020
PHP file_get_contents: Dateien in PHP auslesen!

Oft müssen wir Daten aus anderen Dateien oder anderen Webseiten verarbeiten.
Mit file_get_contents haben wir in PHP eine recht vielseitige Option, um beides zu tun.

1. Dateien als String öffnen mit file_get_contents

Die Funktion file_get_contents akzeptiert 5 Parameter, 4 davon sind optional.
Der Rückgabewert ist der Dateiinhalt als String.

file_get_contents($dateiname, $include_path, $kontext, $versatz, $laenge)
    $dateiname (erforderlich)
        Name der auszulesenden Datei
    $include_path (optional)
        Angabe, ob in include_path auch gesucht werden soll
    $kontext (optional)
        Kontext-Ressource von stream_context_create()
    $versatz (optional)
        Die Position, an der das Lesen im Originalstream beginnt
        Negative Offsets zählen vom Ende des Streams
    $laenge (optional)
        Maximale Länge der zu lesenden Daten
        Standardmäßig wird bis zum Ende der Datei gelesen.

Im folgenden Beispiel wird die Datei helloworld.txt ausgelesen und danach ausgegeben.

echo file_get_contents("helloworld.txt");
// hello world
hello world

Der zweite Parameter gibt an, ob der include_path genutzt werden soll. Diesen kannst du entweder über die Einstellungen in der php.ini-Datei ändern (siehe Dokumentation: https://www.php.net/manual/de/ini.core.php#ini.include-path) oder mit Funktionen wie set_include_path setzen.

Für das folgende Beispiel nutzen wir den Ordner include_path_test, um die Datei ipt.txt zu speichern. Diese wird dann von file_get_contents ausgegeben.

set_include_path('include_path_test');
echo file_get_contents("ipt.txt", TRUE);
// include_path test
include_path test

2. Mit Hilfe von der PHP file_get_contents Funktion mit Webseiten interagieren

Mit file_get_contents kannst du auch Adressen im Web angeben.
Das folgende Beispiel sendet eine Anfrage an api.ipify.org, welche die externe IP-Adresse des Computers ausgeben sollte, auf dem das Skript läuft.

echo file_get_contents("https://api.ipify.org/");

Wenn du vom dritten Parameter, $kontext, gebrauch machst, kannst du zusätzliche Optionen angeben. Das folgende Beispiel führt einen POST-Request zu quotes.toscrape.com/login aus und gibt das Ergebnis zurück.
In diesem Request werden Nutzerdaten übermittelt, um die Ansicht für eingeloggte Nutzer zu erhalten.

$nutzerdaten = ['username' => 'asdf', 'password' => 'wasd'];
$nutzerdaten = http_build_query($nutzerdaten);
$optionen = [
  'http' => [
    'method'  => 'POST',
    'header'=> "Content-type: application/x-www-form-urlencoded\r\n"
             . "Content-Length: " . strlen($nutzerdaten) . "\r\n",
    'content' => $nutzerdaten
  ]
];
$kontext = stream_context_create($optionen);
echo file_get_contents('http://quotes.toscrape.com/login', false, $kontext);

Die letzten beiden Parameter können genutzt werden, um nur bestimmte Teile des Strings zurückzugeben.
Der vierte Parameter gibt den Versatz an. Dieser kann auch negativ sein, dann wird vom Ende des Strings gezählt.
Mit dem fünften Parameter legst du die Länge des Rückgabestrings fest.

echo file_get_contents("helloworld.txt", FALSE, NULL, 6);
// world
echo file_get_contents("helloworld.txt", FALSE, NULL, -5);
// world
echo file_get_contents("helloworld.txt", FALSE, NULL, 6, 3);
// wor
echo file_get_contents("helloworld.txt", FALSE, NULL, 0, 5);
// hello

3. Fazit

Mit file_get_contents haben wir eine einfache Möglichkeit, eine Datei in einen String einzulesen. Mit den zusätzlichen Parametern können wir die Länge des Rückgabewerts beeinflussen. Zudem können wir festlegen, ob im include_path auch gesucht werden soll. Uns steht auch noch die Möglichkeit zur Verfügung, zusätzliche Daten mit unserer Abfrage über den Parameter $kontext zu übermitteln.

Hast du Fragen? Anmerkungen? Lob oder Kritik? Lass es mich in den Kommentaren wissen!



Bislang gibt es keine Kommentare. Markier dein Revier und sei der Erste!

Schreibe einen Kommentar

Das könnte dich auch interessieren

Arrow-up

Programmieren lernen war noch nie so einfach.

Lerne von echten Experten durch echte Praxisprojekte und mit individueller Hilfe, falls du mal nicht weiterkommst!

keine Zahlungsdaten notwendig!