PHP ZipArchive-搜索字符串的条目内容
我想在压缩文件夹中搜索给定字符串的文件 通过以下操作,我当前可以获得压缩文件的列表:PHP ZipArchive-搜索字符串的条目内容,php,zip,Php,Zip,我想在压缩文件夹中搜索给定字符串的文件 通过以下操作,我当前可以获得压缩文件的列表: $zip = new ZipArchive; $res = $zip->open("./test.zip"); var_dump($res); for( $i = 0; $i < $zip->numFiles; $i++ ){ $stat = $zip->statIndex( $i ); var_dump($stat['name']); } $zip->close(
$zip = new ZipArchive;
$res = $zip->open("./test.zip");
var_dump($res);
for( $i = 0; $i < $zip->numFiles; $i++ ){
$stat = $zip->statIndex( $i );
var_dump($stat['name']);
}
$zip->close();
$zip=新的ZipArchive;
$res=$zip->open(“./test.zip”);
var_dump($res);
对于($i=0;$i<$zip->numFiles;$i++){
$stat=$zip->statidex($i);
变量转储($stat['name']);
}
$zip->close();
我一直在回顾找到的解决方案。似乎触及我所需内容的唯一解决方案是程序性的,并有以下注释:
$zip = new ZipArchive;
$res = $zip->open("./test.zip");
var_dump($res);
for( $i = 0; $i < $zip->numFiles; $i++ ){
$stat = $zip->statIndex( $i );
var_dump($stat['name']);
}
$zip->close();
默认情况下,zip\u条目\u read只能从文件中读取1024字节。。所以
内容不是文件的完整内容,而是仅前1024个字节
在我选择解压文件夹之前,有没有一种(OOP)方法可以搜索我所有的条目中的字符串?此外,如果我想显示压缩文件的全部内容,是否需要先解压缩?最后,如果未解压缩就无法显示完整内容,是否有方法从压缩文件夹中提取单个文件?您可以使用或ZipArchive::getFromIndex()读取压缩文件内容
$zip = new ZipArchive;
$res = $zip->open("./test.zip");
for( $i = 0; $i < $zip->numFiles; $i++ ){
var_dump($zip->getFromIndex($i));
}
$zip->close();
$zip=新的ZipArchive;
$res=$zip->open(“./test.zip”);
对于($i=0;$i<$zip->numFiles;$i++){
var_dump($zip->getFromIndex($i));
}
$zip->close();
如果要搜索每个文件的内容,则无论发生什么情况,都必须进行解压缩。它可能不会以基于磁盘的格式发生,但会发生在某个地方,例如内存中。仅供参考,压缩文件就是这样工作的
我将放弃基于OOP的ZipArchive
类,它是命中还是未命中,取决于是否存在与基于函数的方法相对应的方法
如果要搜索文件的内容,需要将字节数作为对应条目的第二个参数传递给。要获取字节数,请调用
$zip=zip_open('./file.zip');
而($entry=zip\u read($zip)){
//这是未压缩的大小
$true\u size=zip\u entry\u filesize($entry);
//通读
$true\u entry=zip\u entry\u read($entry,$true\u size);
$idx=mb_strpos($true_entry,'您正在查找的字符串');
如果($idx){
回声‘找到了!’;
}
}
循环中的变量$true\u entry
将是一个单独的文件,您可以使用