目前我有一个包含文件的zip文件夹,我不知道它的文件名。我唯一知道的是,一个文件名与字符串a非常相似。它实际上是一个字符。
我现在要做的是仅提取与我所拥有的字符串最相似的文件。要从zip中仅提取一个文件,请使用以下有效的代码:
$var_1 = 'PHP IS GREAT';
$var_2 = 'WITH MYSQL';
similar_text($var_1, $var_2, $percent);
我知道要检查字符串的相似性,我可以使用以下代码:
git rebase
根据百分比,我可以判断哪个文件与我的字符串最相似。我唯一担心的是ZipArchieve没有一个功能来从zip中检索文件而不知道确切的文件名。
所以我想知道是否有办法根据与文件名最相似的字符串从zip中检索单个文件。
答案 0 :(得分:1)
This comment in the docs提到如何列出zip存档中的文件,因此,您只需遍历所有文件名并找到与您拥有的字符串最匹配的文件名,然后将其解压缩。
$search = 'Closefilename.doc';
$za = new ZipArchive();
$za->open('theZip.zip');
$similarity = 0;
for( $i = 0; $i < $za->numFiles; $i++ ){
$stat = $za->statIndex( $i );
similar_text($stat['name'], $search, $sim);
if ($sim > $similarity) {
$similarity = $sim;
$filename = $stat['name'];
}
}
// Now extract $filename;
答案 1 :(得分:0)
试试这段代码:
// Your Zip File path
$zip = zip_open( $fileName );
if ( is_resource( $zip ) ) {
while( $zip_entry = zip_read( $zip ) ) {
$zip_entry_string = zip_entry_read ( $zip_entry );
// Compare here with similar_text
// If success you can write this string to file
}
}
zip_close( $zip );
?>