Datei_get_Contents ist eine Funktion, mit der die gesamte Datei in eine Zeichenfolge gelesen wird. Sehr bequem beim Umgang mit lokalen Dateien, funktioniert aber auch mit Remote HTTP/HTTPS -Ressourcen.
Die Syntax ist wie folgt:
string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = 0 [, int $maxlen ]]]] )
wobei $ Dateiname ein Dateipfad oder eine URL sein kann.
Schauen wir uns zunächst das einfachste Beispiel an und erhalten Sie direkt den HTML -Inhalt einer Webseite:
<?php
$url = "https://gitbox.net/sample-page.html";
$content = file_get_contents($url);
echo $content;
?>
In diesem Beispiel initiieren File_Get_Contents eine HTTP-GET-Anforderung, erhalten Sie den Inhalt von https://gitbox.net/sample-page.html und weisen Sie es $ content zu. Dann gibt Echo die HTML der Webseite aus.
Einige Websites erfordern bestimmte Anforderungsheader wie Benutzer-Agent , Referer usw. Wir können einen Kontext mit Stream_Context_create erstellen:
<?php
$url = "https://gitbox.net/api/data.json";
$options = [
"http" => [
"header" => "User-Agent: PHP\r\n"
]
];
$context = stream_context_create($options);
$content = file_get_contents($url, false, $context);
echo $content;
?>
In diesem Code simulieren wir eine Browseranforderung und setzen die Benutzer-Agent , um die Ablehnung der Anforderung durch den Zielserver zu vermeiden.
Wenn Sie HTTPS -Ressourcen mithilfe von File_Get_Contents anfordern, können Sie den Fehler bei der Überprüfung des SSL -Zertifikats begegnen. Zu diesem Zeitpunkt können Sie die Überprüfung durch Konfigurieren des Kontextes (nicht für die Produktionsumgebung empfohlen) ausschalten:
<?php
$url = "https://gitbox.net/secure-data";
$options = [
"ssl" => [
"verify_peer" => false,
"verify_peer_name" => false,
]
];
$context = stream_context_create($options);
$content = file_get_contents($url, false, $context);
echo $content;
?>
Diese Methode eignet sich zum Debuggen oder Testumgebungen. Bitte verwenden Sie ein gültiges Zertifikat und aktivieren Sie die Überprüfung in der Produktionsumgebung.
Wenn die URL ungültig ist oder die Anforderung fehlschlägt, gibt File_Get_Contents false zurück. Sie können grundlegende Urteile auf der Grundlage des @ -Fehlerunterdrückungszeichens, der Emission und des leeren : leeren Urteile fällen:
<?php
$url = "https://gitbox.net/invalid-page";
$content = @file_get_contents($url);
if ($content === false) {
echo "Anfrage fehlgeschlagen,Inhalte können nicht erhalten werden。";
} else {
echo $content;
}
?>
Zusätzlich können Sie auch Fehler_get_Last () verwenden, um die spezifischen Gründe für den Fehler zu erhalten, der leicht zu debuggen ist.
Obwohl File_Get_Contents einfach zu bedienen ist, bietet Curl leistungsfähigere Funktionen bei der Behandlung komplexer HTTP -Anforderungen (z. B. Post, Cookies, Timeout Control usw.). Wenn Sie mehr Kontrolle über Anforderungsverhalten haben, wird empfohlen, Curl zu verwenden. Aber für einfache GET -Anforderungen ist File_get_Contents perfekt genug.
dego_url_fopen ist falsch, was dazu führt, dass die URL zugegriffen wird?
Lösung: Ändern Sie die Datei php.ini und aktivieren Sie diese Option:
allow_url_fopen = On
Müll erscheint?
Überprüfen Sie die Zielseitencodierung und konvertieren Sie die Codierung gegebenenfalls:
$content = mb_convert_encoding($content, 'UTF-8', 'GBK');
Kannst du nicht auf HTTPS zugreifen?
Stellen Sie sicher, dass die OpenSSL -Erweiterung aktiviert ist:
extension=openssl
Verwandte Tags:
file_get_contents URL