我有一個函數,它從一個文件夾中獲取文件的名稱,按日期對它們進行排序,然後創建一個指向該文件的鏈接。但是,這隻適用於實際文件名在單詞之間有空格的情況。如果我將連字符添加到文件名中,則按日期排序無法正常工作。正確的preg_match代碼按日期排序文件名?
的工作有相應的文件名:
介紹一月2011.pdf
演示八月2010.pdf
表現可能2010.pdf
如果我加連字符命令中斷的文件名稱:
介紹,一月2011.pdf
演示八月-2010.pdf
介紹五月-2010.pdf
我如何可以改變的preg_match(),因此,它需要考慮連字符?這裏是我的代碼:
$linkdir="documents/presentations";
$dir=opendir("documents/presentations");
$files=array();
while (($file=readdir($dir)) !== false)
{
if ($file != "." and $file != ".." and $file != "index.php")
{
array_push($files, $file);
}
}
closedir($dir);
function date_sort_desc($a, $b)
{
preg_match('/\w+ \d{4}/', $a, $matches_a);
preg_match('/\w+ \d{4}/', $b, $matches_b);
$timestamp_a = strtotime($matches_a[0]);
$timestamp_b = strtotime($matches_b[0]);
if ($timestamp_a == $timestamp_b) return 0;
return $timestamp_a < $timestamp_b;
}
usort($files, 'date_sort_desc');
foreach ($files as $file){
$name = substr($file, 0, strrpos($file, '.'));
$filename = str_replace(" ", "%20", $file);
$name = str_replace("-", " ", $file);
print "<li><a href='/$linkdir/$filename' rel='external'>$name</a></li>";
}
任何幫助將非常感激。
超級巨星 - 非常感謝你! – Jonathan 2011-04-07 09:02:47