コードは私の頭ではずっと小さく見えましたが、結果のコードはわずか 3 行です :)
$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
から来たのかわからないので、それについて教えてください:)