ホームページ  >  記事  >  バックエンド開発  >  PHP ZipArchive を通じて圧縮パッケージのファイルのタイムスタンプを変更するにはどうすればよいですか?

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

王林
王林オリジナル
2023-07-22 15:41:07929ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。