PHP で .ZIP アーカイブを使用して達成しようとしている、少し型にはまらないタスクがあります。自動化タスクに使用する zip アーカイブ (Amazon EC2 インスタンスのスタートアップ パッケージ) を持っています。これには、多数のテキスト ファイルと xml ファイルが含まれています。私がする必要があるのは、これらのファイル内のいくつかのテキストを検索/置換し、その場で PHP を使用して BASE 64 でエンコードされた文字列を出力することです (新しい .zip ファイルを作成するのではありません)。
file_get_contents()、base64_encode()、または検索/置換でファイルの内容と base64 エンコードを取得することに問題はありません。
アーカイブを解凍したり、ファイルをコピーしたり、ファイルを編集して新しい .zip をディスクに書き込んだり、コンテンツを取得してエンコードしたりすることは避けたいと思います。私は、次のような解決策があることを望んでいました。
zip ファイルの内容を文字列に取得します。
$originalZipFile = file_get_contents('Path/To/ZipFile');
その文字列のデータを新しい文字列に「解凍」して、検索/置換したいテキストのビットを公開します。
$unzippedFile = someFunction($originalZipFile);
テキストのビットを検索して置換します。
$processedString = str_replace($find, $replace, $unzippedFile);
処理された文字列を新しい文字列に「再圧縮」します。
$rezippedFile = someOtherFunction($processedString);
「rezzip された」文字列を Base64 でエンコードします。
$desiredOutputString = base64_encode($rezippedFile);
PHP ZipArchive クラスを調べましたが、探している機能がないようです。
どんな洞察も大歓迎です!
-オリバー