PHP ZipArchive を通じて圧縮パッケージのファイルのタイムスタンプを変更するにはどうすればよいですか?

王林
リリース: 2023-07-22 15:42:01
オリジナル
946 人が閲覧しました

PHP ZipArchive を使用して圧縮パッケージのファイルのタイムスタンプを変更するにはどうすればよいですか?

はじめに:
ZipArchive は、ZIP 圧縮ファイルの作成、追加、抽出、変更に使用される PHP の組み込みクラスです。ただし、ZipArchive クラスには、ZIP ファイルのタイムスタンプの変更に関していくつかの制限があります。この記事では、PHP ZipArchive を使用して圧縮パッケージ内のファイルのタイムスタンプを変更する方法を紹介し、コード例を示します。

手順:
PHP ZipArchive を使用して圧縮パッケージ内のファイルのタイムスタンプを変更する手順は次のとおりです。

  1. ZipArchive オブジェクトを作成し、ZIP を開きます。ファイル:

    $zip = new ZipArchive;
    if ($zip->open('example.zip') === true) {
      // 文件打开成功,继续后续操作
    } else {
      // 文件打开失败,处理错误逻辑
    }
    ログイン後にコピー
  2. ZIP ファイル内のすべてのファイルをスキャンし、ZIP ファイル内のインデックスを取得します:

    $fileIndex = array();
    for ($i = 0; $i < $zip->numFiles; $i++) {
      $fileIndex[$i] = $zip->getNameIndex($i);
    }
    ログイン後にコピー
  3. 変更されたファイル:

    $file = 'path_to_file_within_zip';
    $timestamp = time(); // 设置新的时间戳
    
    $index = array_search($file, $fileIndex); // 获取文件在ZIP中的索引
    if ($index !== false) {
      // 找到文件,修改时间戳
      $zip->setIndex($index);
      $zip->setArchiveModifiedTime($timestamp);
      $zip->close();
    } else {
      // 文件不存在,处理错误逻辑
    }
    ログイン後にコピー
  4. 変更された ZIP ファイルを保存して閉じます:

    $zip->close();
    ログイン後にコピー

完全なサンプル コード:

function modifyZipFileTimestamp($zipFile, $file, $timestamp) {
  $zip = new ZipArchive;
  if ($zip->open($zipFile) === true) {
    $fileIndex = array();
    for ($i = 0; $i < $zip->numFiles; $i++) {
      $fileIndex[$i] = $zip->getNameIndex($i);
    }
    
    $index = array_search($file, $fileIndex);
    if ($index !== false) {
      $zip->setIndex($index);
      $zip->setArchiveModifiedTime($timestamp);
      $zip->close();
      return true;
    }
    
    $zip->close();
  }
  
  return false;
}

// 使用示例
$zipFile = 'example.zip';
$file = 'path_to_file_within_zip';
$newTimestamp = strtotime('2022-01-01 00:00:00');
if (modifyZipFileTimestamp($zipFile, $file, $newTimestamp)) {
  echo '文件时间戳修改成功!';
} else {
  echo '文件时间戳修改失败!';
}
ログイン後にコピー

概要:
PHP ZipArchive クラスを通じて、ZIP 圧縮ファイル内のファイルのタイムスタンプを簡単に変更できます。この記事では、ZipArchive クラスを使用して ZIP ファイルのタイムスタンプを変更する手順について説明し、完全なサンプル コードを提供します。この記事が、PHP で ZIP ファイルのタイムスタンプを変更する必要がある開発者に役立つことを願っています。

以上がPHP ZipArchive を通じて圧縮パッケージのファイルのタイムスタンプを変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート