为什么我无法在 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()
并使用它的结果 returns.
例如:
$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!';
}
}
我在 documentation 中没有看到任何说明 ZipArchive->open
以这种方式接受通配符路径的内容。另外,如果有几个文件匹配会怎样?
相反,找到你想要的文件。如果是今天的日期...
$myFile = 'C:/Users/Acer/Downloads/test-'.date("d-m-Y").'.zip';
我正在尝试使用通配符提取 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()
并使用它的结果 returns.
例如:
$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!';
}
}
我在 documentation 中没有看到任何说明 ZipArchive->open
以这种方式接受通配符路径的内容。另外,如果有几个文件匹配会怎样?
相反,找到你想要的文件。如果是今天的日期...
$myFile = 'C:/Users/Acer/Downloads/test-'.date("d-m-Y").'.zip';