У меня есть функция, которая берет имена файлов из папки, сортирует их по дате, а затем создает ссылку на файл. Однако это работает только в том случае, если фактическое имя файла имеет пробелы между словами. Если я добавлю дефисы в имя файла, порядок по дате не будет работать правильно.
Имена файлов, которые работают:
Презентация январь 2011.pdf
Презентация август 2010.pdf
Презентация май 2010.pdf
Если я добавлю дефисы к именам файлов, порядок будет прерван:
Presentation-января-2011.pdf
Презентация-август-2010.pdf
Presentation-May-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>";
}
Любая помощь по этому вопросу будет принята с благодарностью.