In PHP sind zip_entry_name und zip_entry_read Funktionen zum Betrieb von Zip -Dateien. Durch diese beiden Funktionen können wir den spezifischen Inhalt in der ZIP -Datei lesen. In diesem Artikel werden wir die Verwendung dieser beiden Funktionen einführen und tatsächliche Fälle kombinieren, um zu zeigen, wie die Dateiinhalte in ZIP -Dateien über diese beiden Funktionen gelesen werden.
ZIP -Dateien sind ein gängiges komprimiertes Dateiformat, mit dem mehrere Dateien und Verzeichnisse in eine Datei komprimiert werden, um einen einfachen Speicher und Übertragung zu erhalten. Das ZIP -Format unterstützt verlustfreie Komprimierung und kann mehrere Arten von Dateien enthalten. Um ZIP -Dateien in PHP zu manipulieren, können wir die Ziparchive -Klasse verwenden oder die zugrunde liegenden Serienfunktionen für Zip_* verwenden, um die Zip -Dateien direkt zu verarbeiten.
Die Funktion zip_entry_name wird verwendet, um den Namen eines Eintrags (d. H. Datei) in einer ZIP -Datei zu erhalten. Diese Funktion muss die Funktion zip_read verwenden, um den Dateieintrag nach dem Öffnen einer ZIP -Datei in den Speicher zu lesen, bevor er aufgerufen werden kann.
Funktionsdefinition:
<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">zip_entry_name</span></span><span> ( resource </span><span><span class="hljs-variable">$zip_entry</span></span><span> )
</span></span>
Parameter:
$ ZIP_ENTRY : Die von der Funktion zip_read zurückgegebene Eintragsressource.
Rückgabewert:
Gibt eine Zeichenfolge zurück, die den Namen des Eintrags angibt. Wenn ein Fehler auftritt, wird False zurückgegeben.
Die Funktion ZIP_ENTRY_READ wird verwendet, um den Inhalt eines Eintrags in einer ZIP -Datei zu lesen. Diese Funktion kann den Dateiinhalt zur weiteren Verarbeitung in eine Zeichenfolge lesen.
Funktionsdefinition:
<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">zip_entry_read</span></span><span> ( resource </span><span><span class="hljs-variable">$zip_entry</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$length</span></span><span> )
</span></span>
Parameter:
$ ZIP_ENTRY : Die von der Funktion zip_read zurückgegebene Eintragsressource.
$ Länge : Die maximale Anzahl von Bytes, die pro Zeit gelesen wurden. Normalerweise kann es auf die Größe des Eintrags eingestellt werden.
Rückgabewert:
Gibt eine Zeichenfolge zurück, die den Leseninhalt darstellt. Wenn die Lektüre fehlschlägt, wird False zurückgegeben.
Hier ist ein einfaches Beispiel, das zeigt, wie Sie zip_entry_name und zip_entry_read verwenden, um Inhalte in einer ZIP -Datei zu lesen.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// OffenZIPdokumentieren</span></span><span>
</span><span><span class="hljs-variable">$zip</span></span><span> = </span><span><span class="hljs-title function_ invoke__">zip_open</span></span><span>(</span><span><span class="hljs-string">'example.zip'</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-comment">// DurchquerenZIPdokumentieren中的所有条目</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$zip_entry</span></span><span> = </span><span><span class="hljs-title function_ invoke__">zip_read</span></span><span>(</span><span><span class="hljs-variable">$zip</span></span><span>)) {
</span><span><span class="hljs-comment">// Holen Sie sich den Namen des Eintrags</span></span><span>
</span><span><span class="hljs-variable">$entry_name</span></span><span> = </span><span><span class="hljs-title function_ invoke__">zip_entry_name</span></span><span>(</span><span><span class="hljs-variable">$zip_entry</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"正在读取dokumentieren: <span class="hljs-subst">$entry_name</span></span></span><span>\n";
</span><span><span class="hljs-comment">// Holen Sie sich die Größe des Eintrags</span></span><span>
</span><span><span class="hljs-variable">$entry_size</span></span><span> = </span><span><span class="hljs-title function_ invoke__">zip_entry_filesize</span></span><span>(</span><span><span class="hljs-variable">$zip_entry</span></span><span>);
</span><span><span class="hljs-comment">// 读取dokumentieren内容</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">zip_entry_open</span></span><span>(</span><span><span class="hljs-variable">$zip</span></span><span>, </span><span><span class="hljs-variable">$zip_entry</span></span><span>, </span><span><span class="hljs-string">"r"</span></span><span>)) {
</span><span><span class="hljs-comment">// 将dokumentieren内容读取到一个变量中</span></span><span>
</span><span><span class="hljs-variable">$file_content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">zip_entry_read</span></span><span>(</span><span><span class="hljs-variable">$zip_entry</span></span><span>, </span><span><span class="hljs-variable">$entry_size</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"dokumentieren内容: \n<span class="hljs-subst">$file_content</span></span></span><span>\n";
</span><span><span class="hljs-comment">// Schließen Sie den Eintrag</span></span><span>
</span><span><span class="hljs-title function_ invoke__">zip_entry_close</span></span><span>(</span><span><span class="hljs-variable">$zip_entry</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">"无法Offen条目 <span class="hljs-subst">$entry_name</span></span></span><span>\n";
}
}
</span><span><span class="hljs-comment">// SchließungZIPdokumentieren</span></span><span>
</span><span><span class="hljs-title function_ invoke__">zip_close</span></span><span>(</span><span><span class="hljs-variable">$zip</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">"无法OffenZIPdokumentieren\n"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Öffnen Sie die ZIP -Datei: Zip_open wird verwendet, um die ZIP -Datei zu öffnen und einen Ressourcenhandle zurückzugeben. Wenn die Öffnung fehlschlägt, geben Sie false zurück.
Lesen Sie Einträge: Zip_read wird verwendet, um Eintragsressourcen aus ZIP -Dateien zu lesen. Jedes Mal, wenn ZIP_Read aufgerufen wird, gibt es die Ressource für den nächsten Eintrag zurück.
Rufen Sie den Eintragsnamen ab: Verwenden Sie ZIP_ENTRY_NAME , um den Namen des aktuellen Eintrags (d. H. Der Dateiname) zu erhalten, und geben Sie ihn aus.
Lesen Sie den Eintragsinhalt: Öffnen Sie den Eintrag in der Funktion zip_entry_open und geben Sie den Lesemodus an ( R steht für Reading). Verwenden Sie dann zip_entry_read, um den Inhalt des Eintrags zu lesen. Der Leseinhalt kann direkt verarbeitet werden, z. B. das Ausdruck oder Speichern in einer Datei.
Eintrag schließen: ZIP_ENTRY_CLOSE wird verwendet, um den Eintrag zu schließen und relevante Ressourcen zu veröffentlichen.
Schließen Sie die ZIP -Datei: Nach Abschluss der Verarbeitung der ZIP -Datei schließen Sie Zip_Close , um die ZIP -Datei zu schließen und die Ressourcen zu veröffentlichen.
Der von zip_entry_read gelesene Inhalt wird vom Byte -Stream gelesen, sodass Sie sicherstellen müssen, dass der eingehende Parameter $ Länge angemessen ist. Wenn der gelesene Inhalt relativ groß ist, lesen Sie sie am besten in Chargen.
Stellen Sie beim Betrieb einer größeren Zip -Datei sicher, dass während der Verarbeitung kein Speicherüberlauf auftritt. Wenn Sie eine große Anzahl von Dateien lesen müssen, wird empfohlen, sie Schritt für Schritt zu verarbeiten, um zu vermeiden, dass zu viel Inhalt gleichzeitig gelesen wird.
ZIP_ENTRY_NAME UND ZIP_ENTRY_READ sind zwei sehr praktische Funktionen. Sie werden in Kombination verwendet, um den Eintragsnamen und den spezifischen Inhalt in der ZIP -Datei einfach zu lesen. Bei der Verarbeitung komprimierter Pakete bieten diese beiden Funktionen Betriebsmethoden mit niedrigem Niveau, sodass wir flexibel Dateiinhalte entsprechend den tatsächlichen Anforderungen lesen können.