Этого кода выглядел намного меньше, на моем взгляде, но полученный код всего три строки :)
$files = glob('content/*.txt', GLOB_NOSORT);
// sort the file array by date; see below
usort($files, 'by_file_date');
// strip the filename
$files = array_map('strip_filename', $files);
'by_file_date'
функция объявляется позже и в основном использует функцию get_date
для выполнения даты «вытягивания» из файлов. Я использовал preg_match
на основе формы, которую вы показали, чтобы найти значение даты; Я предположил, что date
является целым числом (то есть последовательностью цифр). Если нет, дайте мне знать.
// pull date value from the file
// @todo this function can be optimized by keeping a static array of
// files that have already been processed
function get_date($f)
{
// match the date portion; i'm assuming it's an integer number
if (preg_match('/^date:\s*(\d+)/', file_get_contents($f), $matches)) {
return (int)$matches[1];
}
return 0;
}
function by_file_date($a, $b)
{
// sort by date ASC
return get_date($a) - get_date($b);
}
Наконец, вам необходимо снять имя файла; Предполагая, что вы просто хотите, имя файла, а не каталог:
function strip_filename($f)
{
// strip the directory portion
return basename($f);
}
Не знает, где .md
пришел, так что вы должны дать мне знать о том, что один :)
Где '.md' взялось? –