0

PHP で .ZIP アーカイブを使用して達成しようとしている、少し型にはまらないタスクがあります。自動化タスクに使用する zip アーカイブ (Amazon EC2 インスタンスのスタートアップ パッケージ) を持っています。これには、多数のテキスト ファイルと xml ファイルが含まれています。私がする必要があるのは、これらのファイル内のいくつかのテキストを検索/置換し、その場で PHP を使用して BASE 64 でエンコードされた文字列を出力することです (新しい .zip ファイルを作成するのではありません)。

file_get_contents()、base64_encode()、または検索/置換でファイルの内容と base64 エンコードを取得することに問題はありません。

アーカイブを解凍したり、ファイルをコピーしたり、ファイルを編集して新しい .zip をディスクに書き込んだり、コンテンツを取得してエンコードしたりすることは避けたいと思います。私は、次のような解決策があることを望んでいました。

  1. zip ファイルの内容を文字列に取得します。

    $originalZipFile = file_get_contents('Path/To/ZipFile');
    
  2. その文字列のデータを新しい文字列に「解凍」して、検索/置換したいテキストのビットを公開します。

    $unzippedFile = someFunction($originalZipFile);
    
  3. テキストのビットを検索して置換します。

    $processedString = str_replace($find, $replace, $unzippedFile);
    
  4. 処理された文字列を新しい文字列に「再圧縮」します。

    $rezippedFile = someOtherFunction($processedString);
    
  5. 「rezzip された」文字列を Base64 でエンコードします。

    $desiredOutputString = base64_encode($rezippedFile);
    

PHP ZipArchive クラスを調べましたが、探している機能がないようです。

どんな洞察も大歓迎です!

-オリバー

4

1 に答える 1

0

まあ、これに対するかなり良い解決策を見つけたと思います。同様のソリューションを探している他の人には、 Paul Duncan によるZipStream-PHPクラスを参照することをお勧めします。

このクラスを使用すると、ファイル、コンテンツ、およびディレクトリを zip ファイルに動的に書き込むことができます。このファイルは、ディスクにファイルを書き込まずにストリーミングされます。

かなり自動です。

于 2012-10-10T21:03:41.713 に答える