PHP file_get_contents: So kannst du Dateien auslesen

    Logo der Programmiersprache PHP
    Avatarbild von Patrick
    Patrick

    veröffentlicht am: 14.05.2020
    zuletzt aktualisiert am: 06.02.2023

    PHP file_get_contents: So arbeiten wir mit Dateien in PHP!

    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.

    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

    Mithilfe 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

    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!

    😩 Gelangweilt von den Udemy & YouTube-Tutorials?!

    Lerne spielerisch Python, Java & SQL und komme deiner gutbezahlten (und an der 🌴 liegenden) Traumkarriere einen Schritt weiter.

    TP Star TP Star TP Star TP Star TP Star

    "Für Leute die gerne Python oder Java lernen wollen ist Codegree klasse. Ist nicht wie bei anderen Konkurrenten auf Videokursen aufgebaut..."

    - Lennart Sparbier

    100% kostenlos registrieren · keine Kreditkarte notwendig

    👋 Wir warten bereits auf dich!

    Lerne das, was du wirklich brauchst.

    Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.

    Logo von Python
    Logo von PyTorch
    Logo von Pandas
    Logo von Matplotlib
    Logo von Java
    Logo von NumPy
    Mehr erfahren

    100% kostenlos registrieren · keine Zahlungsdaten notwendig