代码在我看来要小得多,但生成的代码只有三行 :)
$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
,所以你必须让我知道那个:)