PHP |获取与字符串最相似的文件

PHP |获取与字符串最相似的文件,php,zip,Php,Zip,目前我有一个zip文件夹,其中包含我不知道文件名的文件。我只知道一个文件名与一个字符串非常相似。这是字面上的一个字符了 我现在要做的是只提取与字符串最相似的文件。要从zip中仅提取一个文件,我使用以下代码: $zip = new ZipArchive; if ($zip->open('directory/to/zipfile') === TRUE) { $zip->extractTo('directory/where/to/extract', array('the/file

目前我有一个zip文件夹,其中包含我不知道文件名的文件。我只知道一个文件名与一个字符串非常相似。这是字面上的一个字符了

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

$zip = new ZipArchive;
if ($zip->open('directory/to/zipfile') === TRUE) 
{
    $zip->extractTo('directory/where/to/extract', array('the/filename/that/is/most/similair/most/go/here'));
    $zip->close();
    echo 'ok';
} 
else 
{
    echo 'failed';
}
我知道,要检查字符串的相似性,我可以使用以下代码:

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

similar_text($var_1, $var_2, $percent); 
根据百分比,我可以判断哪个文件与我拥有的字符串最相似。我唯一担心的是ZipArchieve没有一个函数可以在不知道确切文件名的情况下从zip中检索文件

因此,我想知道是否有一种方法可以根据与文件名最相似的字符串从zip中检索单个文件。

提到如何在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;
$search='Closefilename.doc';
$za=新的ZipArchive();
$za->open('theZip.zip');
$similarity=0;
对于($i=0;$i<$za->numFiles;$i++){
$stat=$za->statidex($i);
类似的文本($stat['name'],$search,$sim);
如果($sim>$similarity){
$similarity=$sim;
$filename=$stat['name'];
}
}
//现在提取$filename;
尝试以下代码:

// 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 );
?>

目前我能想到的唯一解决方案是迭代zip中的所有文件,并使用
similor\u text
函数对它们进行比较。但是,如果我不知道完整的文件名,甚至可以从zip中检索文件吗?当然,通过使用带递增计数器的循环,您可以通过索引获取名称(参见@Mike的答案,正是我的意思)如果我回显$filename,我会得到zip文件中的所有文件。你是在
for
循环中回显还是在它之后回显?我的错。我有另一个名为$filename的变量。我更改了变量名,并在循环外回显,效果很好。谢谢。