所以,基本上是一个问题,阅读日期并按正确的顺序排序。 我不知道为什么,但它有时显示今天的日期。 你们中的任何人都可以清理代码吗?我相信它太乱了,我对php不太好。
基本上,新闻脚本的工作原理如下:
它从includes / news文件夹中读取,其中包含.txt文件的新闻。
每个新闻文件的名称都是这样的:[09.12.2013] random news title
,
它需要从最新到最旧,(最新,最旧),即按时间倒序排序。
感谢任何帮助,谢谢。
<?
$files = array();
if($handle = opendir( 'includes/news' )) {
while( $file = readdir( $handle )) {
if ($file != '.' && $file != '..') {
// let's check for txt extension
$extension = substr($file, -3);
// filename without '.txt'
$filename = substr($file, 0, -4);
if ($extension == 'txt')
$files[] = $filename; // or $filename
}
}
closedir($handle);
}
rsort($files);
foreach ($files as $file)
{
// get post date
$postdate = substr($file, 0, 10);
$postdate = str_replace(array('[', ']'), '', $postdate);
$todaysdate = date("d.m.y");
if($postdate == $todaysdate) { $fromtoday = "true"; }
$postdate = date('F jS, Y', strtotime($postdate));
$filetitle = substr($file, 10);
if($fromtoday == "true") { echo "<b style=\"color: #ffb400;\">⌛ NEW:</b>"; }
echo '<a href="?module=news&read=' . $file . '"><span style="float:right;">' . $postdate . '</span>' . $filetitle . "</a>";
}
?>
答案 0 :(得分:0)
您最好的选择可能是使用usort()
bool usort ( array &$array , callable $value_compare_func )
您必须为比较($value_compare_func
)创建一个函数,该函数将解析字符串中的日期,并进行比较。最好查看文档以获取示例。
你会这样使用它:
usort($files, function($a, $b) {
// here is the comparison logic
// return -1,0 or 1
});
通过这种方式,您可以按字符串(或其他任何内容)使用正则表达式解析日期进行排序。
要实现相反的顺序,只需在sort函数中交换-1和1。