为什么我不能在 PHP 中使用通配符解压缩文件


Why I cannot unzip a file using wildcards in PHP?

我正在尝试使用通配符提取zip文件。这样做的目的是找出所述文件。该文件在我下载它的今天日期之后有一个更改的名称:test-18-02-2016.zip .我试过这样:

<?php
    $myFile = 'C:/Users/Acer/Downloads/test*.zip';
    $zip = new ZipArchive();
    if($zip->open($myFile) === true) {
        $zip->extractTo('C:/Users/Acer/Downloads/');
        $zip->close();
        echo 'ok';
    } else {
        echo 'NOT ok!';
    }

我越来越NOT ok..当然,但是当我切换到test-18-02-2016.zip时,我ok.任何帮助弄清楚为什么以及如何解决这个问题都非常感谢。

一个ZipArchive一次只能表示一个文件。 如果绝对必须使用通配符,请考虑将通配符字符串传递到 glob() 中并使用它返回的结果。

例如:

$myFileList = glob('C:/Users/Acer/Downloads/test*.zip');
foreach ($myFileList as $myFile) {
    echo 'Unzipping ' . $myFile . PHP_EOL;
    $zip = new ZipArchive();
    if($zip->open($myFile) === true) {
        $zip->extractTo('C:/Users/Acer/Downloads/');
        $zip->close();
        echo 'ok';
    } else {
        echo 'NOT ok!';
    }
}

我在文档中没有看到任何内容表明ZipArchive->open以这种方式接受通配符路径。此外,如果多个文件匹配会发生什么?

相反,请找到所需的文件。如果是今天的日期...

$myFile = 'C:/Users/Acer/Downloads/test-'.date("d-m-Y").'.zip';