ディレクトリから配列にファイルを読み込むのが最も簡単だと思います。次にnatsort
、配列を作成し、最後のエントリをポップします。
次に例を示します。
<?php
function getLatestVersion() {
$dir = dir('.');
$files = array();
while (($file = $dir->read()) !== false) {
$files[] = $file;
}
$dir->close();
natsort($files);
return array_pop($files);
}
出力
array(6) {
[0]=>
string(1) "."
[1]=>
string(2) ".."
[2]=>
string(16) "Product_1.00.zip"
[3]=>
string(16) "Product_1.05.zip"
[5]=>
string(16) "Product_2.00.zip"
[4]=>
string(17) "Product_10.00.zip"
}
最新バージョンのzipファイルをダウンロードするにはどうすればよいですか?
編集
以下のコメントで@j_mcnallyが指摘しているように、静的ファイルの提供をWebサーバーに処理させる方が効率的です。考えられる方法は、直接リンクするか、を使用してPHPファイルから適切な場所にリクエストをリダイレクトすること301
です。
しかし、それでもPHPに作業を任せたい場合。これが例です。
以下の例をhttp://perishablepress.com/http-headers-file-downloadsから取得し、少し変更しました。
<?php // HTTP Headers for ZIP File Downloads
// http://perishablepress.com/press/2010/11/17/http-headers-file-downloads/
// set example variables
// Only this line is altered
$filename = getLatestVersion();
$filepath = "/var/www/domain/httpdocs/download/path/";
// http headers for zip downloads
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$filename."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filepath.$filename));
ob_end_flush();
@readfile($filepath.$filename);
?>