Datei_Get_Contents () ist eine einfache Funktion zum Lesen von Dateien. Ihre grundlegende Funktion besteht darin, den Inhalt der gesamten Datei zu lesen und zurückzugeben. Es wird normalerweise zum Lesen von Textdateien verwendet und ist auch für kleine Binärdateien sehr geeignet. Für große Dateien oder komprimierte Dateien kann die Effizienz und Anwendbarkeit dieser Funktion jedoch begrenzt sein.
In PHP lädt File_get_Contents () die Datei direkt in den Speicher. Wenn die Datei groß ist, ist die Speicherverwendung hoch, was den Speicherüberlauf verursachen kann. Für komprimierte Dateien liest File_Get_Contents () einfach die Binärdaten und kann den Inhalt darin nicht direkt dekomprimieren oder lesen.
Eine ZIP -Datei ist im Wesentlichen eine komprimierte Datei im Binärformat mit mehreren Dateien oder Verzeichnissen. Datei_Get_Contents () liest die ursprünglichen Binärdaten der gesamten komprimierten Datei. Wenn wir eine ZIP -Datei direkt lesen, erhalten wir einen komprimierten Binärstrom anstelle seines dekomprimierten Inhalts.
Wenn wir den Inhalt einer Datei aus einer ZIP -Datei extrahieren möchten, kann File_get_Contents () diese Aufgabe nicht direkt ausführen. Um die darin enthaltenen Dateien lesen zu können, müssen wir den Inhalt der ZIP -Datei dekomprimieren.
Obwohl File_Get_Contents () selbst den spezifischen Inhalt in der ZIP-Datei nicht direkt lesen kann, können wir die integrierte Ziparchive- Klasse von PHP verwenden, um die ZIP-Datei zu bedienen. Mit dieser Klasse können wir Zip -Dateien öffnen, lesen und dekomprimieren. Das Folgende ist ein Beispiel für die Verwendung von Ziparchive zum Lesen des Inhalts einer ZIP -Datei.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$zipFile</span></span><span> = </span><span><span class="hljs-string">'example.zip'</span></span><span>; </span><span><span class="hljs-comment">// ZIP Dateipfad</span></span><span>
</span><span><span class="hljs-variable">$zip</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">ZipArchive</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$zip</span></span><span>-></span><span><span class="hljs-title function_ invoke__">open</span></span><span>(</span><span><span class="hljs-variable">$zipFile</span></span><span>) === </span><span><span class="hljs-literal">TRUE</span></span><span>) {
</span><span><span class="hljs-comment">// Erhalten ZIP Der erste Dateiname in der Datei</span></span><span>
</span><span><span class="hljs-variable">$fileName</span></span><span> = </span><span><span class="hljs-variable">$zip</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getNameIndex</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>); </span><span><span class="hljs-comment">// Erhalten第一个dokumentieren的名称</span></span><span>
</span><span><span class="hljs-comment">// Lesen Sie den Inhalt der Datei</span></span><span>
</span><span><span class="hljs-variable">$fileContent</span></span><span> = </span><span><span class="hljs-variable">$zip</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getFromName</span></span><span>(</span><span><span class="hljs-variable">$fileName</span></span><span>);
</span><span><span class="hljs-comment">// Dateiinhalt ausgeben</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$fileContent</span></span><span>;
</span><span><span class="hljs-comment">// Schließung ZIP dokumentieren</span></span><span>
</span><span><span class="hljs-variable">$zip</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</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">'Nicht öffnen können ZIP dokumentieren!'</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
In diesem Beispiel verwenden wir zunächst die Ziparchive -Klasse, um die ZIP -Datei zu öffnen, und dann die Methode GetFromName (), um den Inhalt der ersten Datei in der ZIP -Datei zu lesen. Auf diese Weise können wir die Dateien einfach im komprimierten Paket extrahieren, anstatt die binären Daten der gesamten komprimierten Datei direkt zu lesen.
Obwohl File_Get_Contents () selbst die ZIP -Datei nicht dekomprimieren kann, können wir dennoch Datei_get_Contents () verwenden, um den ursprünglichen binären Inhalt der ZIP -Datei zu lesen und sie für die Dekompression an die Ziparchive -Klasse weiterzugeben. Auf diese Weise wird Datei_get_Contents () eine Voraussetzung für das Lesen der Datei, und die tatsächliche Dekompressionsvorstellung wird durch Ziparchive abgeschlossen.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$zipFile</span></span><span> = </span><span><span class="hljs-string">'example.zip'</span></span><span>; </span><span><span class="hljs-comment">// ZIP Dateipfad</span></span><span>
</span><span><span class="hljs-comment">// Lesen ZIP dokumentieren的原始内容</span></span><span>
</span><span><span class="hljs-variable">$zipData</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-variable">$zipFile</span></span><span>);
</span><span><span class="hljs-comment">// 将Lesen到的二进制数据传递给 ZipArchive Dekompression</span></span><span>
</span><span><span class="hljs-variable">$zip</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">ZipArchive</span></span><span>;
</span><span><span class="hljs-variable">$tmpFile</span></span><span> = </span><span><span class="hljs-title function_ invoke__">tempnam</span></span><span>(</span><span><span class="hljs-title function_ invoke__">sys_get_temp_dir</span></span><span>(), </span><span><span class="hljs-string">'zip'</span></span><span>); </span><span><span class="hljs-comment">// 创建一个临时dokumentieren</span></span><span>
</span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-variable">$tmpFile</span></span><span>, </span><span><span class="hljs-variable">$zipData</span></span><span>); </span><span><span class="hljs-comment">// 将Lesen的二进制数据写入临时dokumentieren</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$zip</span></span><span>-></span><span><span class="hljs-title function_ invoke__">open</span></span><span>(</span><span><span class="hljs-variable">$tmpFile</span></span><span>) === </span><span><span class="hljs-literal">TRUE</span></span><span>) {
</span><span><span class="hljs-comment">// Erhalten ZIP Der erste Dateiname in der Datei</span></span><span>
</span><span><span class="hljs-variable">$fileName</span></span><span> = </span><span><span class="hljs-variable">$zip</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getNameIndex</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>); </span><span><span class="hljs-comment">// Erhalten第一个dokumentieren的名称</span></span><span>
</span><span><span class="hljs-comment">// Lesen Sie den Inhalt der Datei</span></span><span>
</span><span><span class="hljs-variable">$fileContent</span></span><span> = </span><span><span class="hljs-variable">$zip</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getFromName</span></span><span>(</span><span><span class="hljs-variable">$fileName</span></span><span>);
</span><span><span class="hljs-comment">// Dateiinhalt ausgeben</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$fileContent</span></span><span>;
</span><span><span class="hljs-comment">// Schließung ZIP dokumentieren</span></span><span>
</span><span><span class="hljs-variable">$zip</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-comment">// 删除临时dokumentieren</span></span><span>
</span><span><span class="hljs-title function_ invoke__">unlink</span></span><span>(</span><span><span class="hljs-variable">$tmpFile</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">'Nicht öffnen können ZIP dokumentieren!'</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
In diesem Beispiel haben wir zuerst die Binärdaten der ZIP -Datei über File_get_Contents () gelesen und dann die Daten in eine temporäre Datei schreiben. Als nächstes verwenden wir die Ziparchive -Klasse, um diese temporäre Datei zu öffnen und den Inhalt darin zu lesen. Auf diese Weise wird File_get_Contents () zum Instrument zum Lesen von Rohdaten, und der Dekompressionsvorgang wird zum Abschluss immer noch an Ziparchive übergeben.
Verwandte Tags:
file_get_contents