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

时间:2016-02-18 20:50:40

标签: php wildcard unzip

我正在尝试使用通配符提取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。 任何有助于弄清楚原因以及如何解决这个问题的帮助都非常感激。

2 个答案:

答案 0 :(得分:4)

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!';
    }
}

答案 1 :(得分:0)

我在documentation中看不到ZipArchive->open以这种方式接受通配路径的任何内容。此外,如果几个文件匹配会发生什么?

相反,找到你想要的文件。如果它是今天的约会......

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