[PHP] zipファイルの中身を解凍させずに読み出す方法

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

WEBサービスを作っていると時たまzipファイルをコントロールしなければいけない場合があります。
 

通常のやり方であれば、任意のフォルダに一時的に解凍して、処理が終わったら一時データを削除するというだけでいいのですが、削除の手間も面倒臭いという人にうってつけのスニペットを紹介します。
 

概要

今回紹介するプログラムは大きく2つの機能を持っています。
 

1. zipファイルの内容ファイル一覧を表示する機能
2. zipファイルに格納押されている任意のテキストファイルの呼び出し

 o;

ググってみると一時解凍するものしか出てこなかったので作って見ました。

環境条件

サーバーはlinuxOSを使うのが望ましいです。
 

phpが動作しているサーバーで”unzip”モジュールがインストールされている必要があります。
 

バージョンなどは特に気にしなくても大体の環境で動作すると思いますが、もし動作しない場合は、若干の手直しをするだけで動くでしょう。
(いいかげんですみません)

ソースコード

簡単解説

リスト呼び出しも、ファイルデータ呼び出しも、unzipコマンドを実行した返り値をreturnさせているだけなので、大したプログラムではないことがわかるでしょう。
 

zipファイルの容量にもよりますが、一般的なテキストファイルの圧縮データぐらいであれば、非常に高速に動くことがわかると思います。
 

使い方

簡単に使い方がわかるindex.phpを用意してみました。
 

 

readZip.phpを読み込んで、それぞれのzipファイル名や、内包テキストファイル名(一覧表示したものから取得するのがいいでしょう)を引数に関数を叩いてあげるだけで、結果が返ってきます。
 

 

リストは、配列をjson形式に変換して返しています。
 

文字列は、そのままreturnしているので、値として受け取れます。
 

いかがですか?コマンドラインって非常に高機能なため、phpと組み合わせるとかなり高速処理ができる&処理を簡素化することができる。
という事に気がつきましたか?
 

このクラスには、あと画像表示機能をつけたら、漫画データなどを一時解凍なしで表示することができるようになるので、便利な図書館アプリなどを作ることも可能になりますね。
 

アイデアは無限大!!

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です