PHP |获取与string最相似的文件

时间:2015-04-28 07:06:23

标签: php zip

目前我有一个包含文件的zip文件夹,我不知道它的文件名。我唯一知道的是,一个文件名与字符串a非常相似。它实际上是一个字符。

我现在要做的是仅提取与我所拥有的字符串最相似的文件。要从zip中仅提取一个文件,请使用以下有效的代码:

$var_1 = 'PHP IS GREAT'; 
$var_2 = 'WITH MYSQL'; 

similar_text($var_1, $var_2, $percent); 

我知道要检查字符串的相似性,我可以使用以下代码:

git rebase

根据百分比,我可以判断哪个文件与我的字符串最相似。我唯一担心的是ZipArchieve没有一个功能来从zip中检索文件而不知道确切的文件名。

所以我想知道是否有办法根据与文件名最相似的字符串从zip中检索单个文件。

2 个答案:

答案 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 );
?>