dariusiii / rarinfo
PHP 归档读取辅助类
v2.7.6
2019-12-18 10:21 UTC
Requires
- php: >=7.2.0
README
一组用于在纯PHP中处理RAR归档及其相关校验文件的基礎工具类(无外部依赖)。请参阅[发行版](https://github.com/DariusIII/rarinfo/releases)页面以获取整个库的版本化发布,其中包含
ArchiveReader
抽象基类,为各种文件检查器定义基本API并实现文件/数据处理的一些常用方法。
- 3.1 修复与Synology NAS的兼容性
- 3.0 修复与OSX的兼容性
- 2.9 将clearstatcache()添加到默认重置
- 2.8 将getFileList()在出错时返回空数组
- 2.7 添加了strposall()静态方法
- 2.6 添加了创建临时文件的方法
- 2.5 添加了对ArchiveInfo的支持
- 2.4 在Windows上未加载com_dot_net时修复获取文件大小的问题
- 2.3 代码清理,添加了convert2hex()方法
- 2.2 添加了对Windows时间戳的支持和一些调整
- 2.1 代码清理,使文件属性为受保护
- 2.0 使get/save范围方法为受保护
- 1.9 改进了范围检查
- 1.8 添加了按范围获取/保存文件数据的方法
- 1.7 添加了对设置分析字节范围的支持,改进了对归档文件片段的处理,添加了默认构造函数,以及一些其他修复。
- 1.6 改进了属性初始化
- 1.5 改进了解包无符号长的方法
- 1.4 在文件中搜索超过PHP_INT_MAX的位置现在抛出异常
- 1.3 改进了大文件文件大小计算
- 1.2 从RarInfo添加了dos2unixtime()
- 1.1 添加了int64()方法来处理64位整数
- 1.0 初次发布(源自RarInfo v2.8,包含错误修复)
ArchiveInfo(扩展ArchiveReader)
示例类,提供对库中所有读取器的代理,并允许递归检查包装在归档中的归档。
- 2.3 修复了读取器属性上的empty()和isset()调用
- 2.2 添加了通过setArchiveExtensions()覆盖扩展过滤器选项
- 2.1 添加了对SzipInfo(7z归档)的支持
- 2.0 改进了递归提取的错误报告
- 1.9 添加了对使用外部客户端递归提取的支持
- 1.8 将存储的归档限制为支持的类型
- 1.7 添加了动态重置读取器列表的功能
- 1.6 添加了设置实例特定读取器列表的方法
- 1.5 将next_offset值限制为主要归档文件
- 1.4 添加了getArchiveFileList()选项以合并所有归档文件列表
- 1.3 改进了性能和错误报告
- 1.2 修复了allowsRecursion()方法仅返回布尔值
- 1.1 修复了与PHP < 5.3.0的向后兼容性
- 1.0 初次发布
RarInfo(扩展ArchiveReader)
用于检查RAR归档内容的类。
- 5.7 修复了损坏的RAR50文件的内存溢出错误,问题#9
- 5.6 改进了对损坏的RAR 5.0归档的处理
- 5.5 修复了外部客户端文件路径的转换
- 5.4 添加了'split_after'字段到文件列表,以辅助CRC32检查
- 5.3 添加了文件列表输出中的CRC32校验和
- 5.2 将getFileList()在出错时返回空数组
- 5.1 大幅加快了findFileHeader()方法
- 5.0 改进了对外部客户端的处理,包括Windows修复
- 4.9 添加了使用外部客户端提取文件选项
- 4.8 调整了文件头合理性检查
- 4.7 增加了对 ArchiveInfo 的支持
- 4.6 修复了对加密头部的归档的处理
- 4.5 改进了对一些损坏源的处理
- 4.4 改进了分析性能,清理了代码,修复了 b/c 问题
- 4.3 增加了对 RAR 5.0 快速打开数据的处理
- 4.2 增加了对 RAR 5.0 归档格式的初步支持
- 4.1 增加了对零填充 RAR 文件的处理
- 4.0 调整了文件块头部和摘要的处理
- 3.9 改进了提取文件内容的方法
- 3.8 增加了对字节的范围支持,更好地处理 RAR 片段
- 3.7 增加了归档块输出的更多信息
- 3.6 改进了标记块的处理,带有新的测试文件
- 3.5 改进了标记块搜索
- 3.4 改进了属性初始化
- 3.3 将 dos2unixtime() 移动到 ArchiveReader
- 3.2 增加了 RarInfo::getFileData() 和 RarInfo::saveFileData();数据与打开的文件句柄现在会持续到手动关闭
- 3.1 现在使用 ArchiveReader::int64() 处理 64 位整数
- 3.0 处理 RAR 文件片段的速度提高了
- 2.9 重新构建了很多内容,以允许更容易的扩展
- 2.8 增加了对大于 PHP_INT_MAX 字节的文件的支持
- 2.7 修复了读取和定位问题
- 2.6 改进了输入错误检查,修复了重置错误
- 2.5 代码清理和优化,增加了 fileCount
- 2.4 优化了解压无符号长整数的方法
- 2.3 增加了跳过目录条目的功能,修复了 Unicode 问题
- 2.2 修复了一些定位问题,增加了更多的归档结束信息
- 2.1 改进了通过 open() 分析磁盘上的大文件的支持
- 2.0 正确支持 Unicode,移植了 UnicodeFilename 类
- 1.9 提供基本的 Unicode 支持,修复了密码和盐信息
- 1.8 提供了关于多部分文件的更多信息,正确地添加了 PACK_SIZE
- 1.7 改进了对 RAR 文件片段的支持
- 1.6 在读取方法中增加了额外的错误检查
- 1.5 改进了 getSummary 方法的输出
- 1.4 增加了文件名健全性检查和 maxFilenameLength 变量
- 1.3 修复了一些文件头缺少 LONG_BLOCK 标志的问题
- 1.2 调整了定位方法
- 1.1 修复了 PHP 不能正确处理无符号长整数的问题(pfft)
- 1.0 初次发布
RarUnicodeFilename (在 rarinfo.php 中)
用于处理 RAR 归档列表中 Unicode 文件名的类。
- 1.2 修复了字节处理问题
- 1.1 将类重命名以避免冲突
- 1.0 初次发布
SfvInfo (扩展 ArchiveReader)
用于检查 SFV 验证文件内容的类。
- 2.1 增加了对正确文件长度的额外检查
- 2.0 当出错时,getFileList() 改为返回空数组
- 1.9 在 getSummary() 输出中增加了 use_range 值
- 1.8 增加了对 ArchiveInfo 的支持
- 1.7 增加了对字节范围的支持
- 1.6 修复了正则表达式贪婪性与额外空格的问题
- 1.5 现在存储文件注释
- 1.4 现在支持所有行结束类型
- 1.3 仅检查有效的 SFV 数据
- 1.2 分析时修复了丢弃最后一个字节的问题
- 1.1 getFileList() 的结果与其他检查器保持一致
- 1.0 初次发布
SrrInfo (扩展 RarInfo)
用于检查 SRR 文件内容的类,并报告它们覆盖的 RAR 文件,以及允许提取它们可能包含的任何存储文件。
- 2.3 将 getFileList() 改为在出错时返回空数组
- 2.2 调整以支持 RarInfo 4.9
- 2.1 增加了对 SRR 标记块的严格检查
- 2.0 增加了对 ArchiveInfo 的支持
- 1.9 改进了分析性能,清理了代码
- 1.8 增加了对 OSO 哈希块的处理
- 1.7 改进了对无效提取请求的处理
- 1.6 增加了对字节范围的支持
- 1.5 改进了对标记块的处理
- 1.4 改进了标记块搜索
- 1.3 改进了属性初始化
- 1.2 数据和打开的文件句柄现在会持续到手动关闭
- 1.1 增加了客户端信息报告的便捷性
- 1.0 初次发布
Par2Info (继承自 ArchiveReader)
用于检查 PAR2 杂凑文件的内容的类,并报告它们覆盖的归档。
- 1.7 在出错时,getFileList() 返回空数组
- 1.6 添加了对 ArchiveInfo 的支持
- 1.5 提高了分析性能
- 1.4 添加了对字节数的支持
- 1.3 在文件列表条目中添加了块计数
- 1.2 改进了属性初始化
- 1.1 修复了无符号长整数的解包
- 1.0 初次发布
ZipInfo (继承自 ArchiveReader)
用于检查 ZIP 归档内容的类。
- 2.1 在文件列表输出中添加了 CRC32 校验和
- 2.0 当出错时,getFileList() 改为返回空数组
- 1.9 改进了对外部客户端的处理,包括 Windows 修复
- 1.8 添加了使用外部客户端提取文件的功能
- 1.7 修复了查找标记签名的问题
- 1.6 添加了对 ArchiveInfo 的支持
- 1.5 提高了分析性能,清理了代码
- 1.4 改进了提取文件内容的方法
- 1.3 添加了对字节数的支持
- 1.2 改进了属性初始化
- 1.1 修复了缺少 CD-R 时的文件计数
- 1.0 初次发布
SzipInfo (继承自 ArchiveReader)
用于检查 7-zip (.7z) 归档内容的类。
- 1.4 改进了子流信息的处理
- 1.3 修复了 getPackedRanges() 输出
- 1.2 在文件列表输出中添加了 CRC32 校验和
- 1.1 修复了子流摘要的解析
- 1.0 初次发布
PipeReader
用于处理外部命令管道输出的实用类。
- 1.2 添加了 readLine() 方法
- 1.1 修复了管道句柄的可见性
- 1.0 初次发布
测试
在 /tests
中有一些基本的单元测试,使用 PHPUnit,样本文件在 /tests/fixtures
中(首先从那里运行 generate.php
,然后在每次拉取时运行),更多覆盖范围和任何符合 GitHub 样式的样本总是受欢迎的。一些可选测试需要外部二进制文件(请参阅 /tests/bin/README.md
)。祝您玩得开心 :)