In PHP ist das Lesen des Inhalts einer lokalen Datei eine übliche Operation. Datei_get_Contents () ist eine sehr bequeme Funktion, mit der Sie den Inhalt der Datei direkt in eine Zeichenfolge lesen können. Diese Funktion kann nicht nur lokale Dateien lesen, sondern auch Dateien im Netzwerk oder sogar Remote -Dateien lesen. In diesem Artikel wird detailliert erläutert, wie Sie Datei_get_Contents () verwenden, um lokale Dateiinhalte zu lesen und einige gemeinsame Verwendungen und Vorsichtsmaßnahmen dafür vorzustellen.
Datei_Get_Contents () ist eine PHP-integrierte Funktion, die den Inhalt einer Datei lesen und den Inhalt der Datei als Zeichenfolge zurückgeben kann. Die grundlegende Syntax einer Funktion lautet wie folgt:
<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$filename</span></span><span> [, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$flags</span></span><span> = </span><span><span class="hljs-number">0</span></span><span> [, resource </span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span> [, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$offset</span></span><span> = -</span><span><span class="hljs-number">1</span></span><span> [, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$maxlen</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span> ]]] )
</span></span>$ Dateiname : Der zu gelesene Dateiname unterstützt relative oder absolute Pfade.
$ flags : optionaler Parameter zum festgelegten Leseoptionen (z. B. kann er auf file_use_include_path oder file_binary festgelegt werden).
$ context : Eine gültige Stream_Context -Ressource, die den Kontext des Streams angibt, ist null .
$ offset : Die Startposition der Datei wird gelesen, die Standardeinstellung ist -1 , was angibt, dass sie aus der Startposition der Datei gelesen wird.
$ maxlen : Die maximale Anzahl von Bytes zu lesen, der Standard ist null , was bedeutet, die gesamte Datei zu lesen.
Der einfachste Weg, es zu verwenden, besteht darin, den Dateipfad als Parameter direkt zu übergeben. Das Beispiel ist wie folgt:
<span><span><span class="hljs-variable">$file_content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file_content</span></span><span>;
</span></span>Der obige Code liest den Inhalt der Datei von Beispiel.txt und gibt ihn auf die Seite aus. Wenn die Datei vorliegt, werden der Dateiinhalt als Zeichenfolge zurückgegeben. Wenn die Datei nicht vorhanden ist, gibt die Funktion FALSE zurück und Sie müssen sich mit möglichen Fehlern befassen.
Normalerweise müssen wir beurteilen, ob die Datei vorhanden ist, um Fehler zu vermeiden, nachdem die Datei nicht gelesen wurde. Sie können die Funktion File_Exists () oder IS_FILE () verwenden, um zu überprüfen, ob die Datei vorliegt:
<span><span><span class="hljs-variable">$file_path</span></span><span> = </span><span><span class="hljs-string">'example.txt'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">file_exists</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>)) {
</span><span><span class="hljs-variable">$file_content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-variable">$file_path</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file_content</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Die Datei existiert nicht'</span></span><span>;
}
</span></span>Alternativ können Sie auch den @ -Fehlersuppressor verwenden, um die Ausgabe der Fehlermeldung zu verhindern:
<span><span><span class="hljs-variable">$file_content</span></span><span> = @</span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$file_content</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Dateilesung fehlgeschlagen'</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file_content</span></span><span>;
}
</span></span>Es wird jedoch nicht empfohlen, @ zu viel zu verwenden, da es andere Fehler maskieren kann.
Datei_get_Contents () wird standardmäßig die gesamte Datei gelesen. Wenn die Datei sehr groß ist, kann dies zu übermäßigem Speicherverbrauch und sogar Programmabstürzen führen. Wenn Sie nur einen Teil der Datei lesen müssen oder die Datei nach Block lesen möchten, können Sie die Parameter $ offset und $ maxlen verwenden.
Lesen Sie beispielsweise 100 Bytes ab Beginn einer Datei:
<span><span><span class="hljs-variable">$file_content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-literal">null</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file_content</span></span><span>;
</span></span>Datei_Get_Contents () unterstützt auch das Festlegen des Kontextes des Dateilesens und ermöglicht es Ihnen, zu steuern, wie auf Dateien zugegriffen werden (z. B. Einstellen von Proxy, Timeout usw.). Wenn Sie den Kontext festlegen müssen, können Sie die Funktion stream_context_create () verwenden, um eine Kontextressource zu erstellen.
Beispiel: Zeitüberschreitungsgrenze festlegen
<span><span><span class="hljs-variable">$options</span></span><span> = [
</span><span><span class="hljs-string">'http'</span></span><span> => [
</span><span><span class="hljs-string">'timeout'</span></span><span> => </span><span><span class="hljs-number">5</span></span><span> </span><span><span class="hljs-comment">// Stellen Sie die Auszeit auf 5 Zweite</span></span><span>
]
];
</span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_create</span></span><span>(</span><span><span class="hljs-variable">$options</span></span><span>);
</span><span><span class="hljs-variable">$file_content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-variable">$context</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file_content</span></span><span>;
</span></span>Datei_get_Contents () unterstützt das Lesen nicht nur lokale Dateien, sondern auch Remote -Dateien. Sie müssen nur die URL -Adresse angeben. Lesen Sie beispielsweise den Inhalt einer Webseite:
<span><span><span class="hljs-variable">$url</span></span><span> = </span><span><span class="hljs-string">'https://www.example.com'</span></span><span>;
</span><span><span class="hljs-variable">$html_content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-variable">$url</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$html_content</span></span><span>;
</span></span>Wenn Sie Remote -Dateien lesen müssen, stellen Sie sicher, dass die Option "degly_url_fopen in der PHP -Konfiguration" aktiviert ist. Wenn nicht aktiviert, kann es über die Konfigurationsdatei php.ini aktiviert werden.
Leistungsprobleme : Wenn die Datei sehr groß ist, kann die Verwendung von Datei_get_Contents () die gesamte Datei gleichzeitig lesen. Sie können in Betracht ziehen, fopen () , fGets () oder fread () zu verwenden, um Dateiinhalte nach Zeilen oder Block zu lesen.
Fehlerbehandlung : Wenn die Lesen fehlschlägt, gibt File_get_Contents () false zurück. Überprüfen Sie daher bei der Verwendung unbedingt den Rückgabewert, um unvorhersehbare Fehler zu vermeiden.
Dateiberechtigungen : Stellen Sie sicher, dass der PHP -Prozess über ausreichende Berechtigungen für die Dateien gelesen wird, insbesondere in Produktionsumgebungen, in denen unsachgemäße Einstellungen für die Berechtigung dazu führen können, dass die Datei gelesen wird.
Datei_Get_Contents () ist eine sehr einfache Funktion zum Lesen von Dateien, die zum Lesen kleinerer Dateien oder zum Lesen des Gesamtinhalts einer Datei geeignet sind. Bei großen Dateien sollte das Lesen von On-Demanden in Betracht gezogen werden, um Speicher zu speichern. Durch Festlegen des Kontextes können Sie auch das Verhalten des Dateilesens flexibel steuern und das Anwendungsszenario von File_get_Contents () verbessern.
Wenn Sie komplexere Anforderungen an das Lesen von Dateien haben, z. B. Lesen nach Zeile oder Verarbeitung großer Dateien, können Sie in Betracht ziehen, andere Dateibetriebsfunktionen wie fopen () , fread () oder file () zu verwenden.
Verwandte Tags:
file_get_contents