2009-12-29 3 views
0

Я хочу создать страницу новостей, которая включает в себя фрагмент последней 3 FiLea созданной в следующей структуре каталогов:PHP Как включить файлы на основе даты создания?

Так позволяет сказать, что у меня есть следующие файлы:

/news.php /2010/the-latest-article.php /2009/some-long-article-name.php /2009/another-long-article-name.php /2009/too-old-article-name.php /2009/another-old-article-name.php

Я хочу включить только первые 3 файла в вывод news.php.

ответ

1

От php.net:

foreach (glob("../downloads/*") as $path) { //configure path 
    $docs[filectime($path)] = $path; 
} ksort($docs); // sort by key (timestamp) 

foreach ($docs as $timestamp => $path) { 
    print date("d. M. Y: ", $timestamp); 
    print '<a href="'. $path .'">'. basename($path) .'</a><br />'; 
} 

Кроме того, filemtime может дать лучшие результаты, если вы на Windoze.

3

Вы бы:

  • список всех существующих PHP файлов путем обхода структуры каталогов
  • доступ их время создания с filectime
  • выбрать три самые последние в этом списке

Это может стать медленным, если у вас есть много файлов для поиска. База данных будет быстрее.

3

Если вы можете прикрепить свои имена к дате и времени (ГГГГ-ММ-ДД ЧЧ: мм: сс), то вы можете просто отсортировать их по алфавиту и принять последние три. В противном случае у Виктора есть отличный ответ.

1

Вы можете открыть каталог файлов с помощью opendir http://php.net/manual/en/function.opendir.php и READDIR http://www.php.net/manual/en/function.readdir.php

Вы можете использовать функцию PHP filemtime http://php.net/manual/en/function.filemtime.php, которая возвращает последнюю дату файла передается в него изменениях.

Настолько, что вы будете делать, это посмотреть на все файлы в каталоге и заказать их по возврату filemtime (он возвращает отметку времени UNIX). Как только вы их закажете (используя любой алгоритм, который вам нравится), просто верните первые 3 результата.

Смежные вопросы