好的我有一个目录,其中包含按日期命名的文件,扩展名为" .html"。
我要做的是列出目录的内容,减去文件扩展名,按日期排序最新。
我一直在摆弄以下代码几个小时。
<?php
if ($handle = opendir('update_table_cache')) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != ".." ) {
$dirFiles[] = $entry ;
rsort($dirFiles);
foreach($dirFiles as $entry) {
$withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $entry);
echo '<a href="http://www.example.com/update_table_cache/'.$entry.'">'.$withoutExt.'</a><br>';
}
}
}
closedir($handle);
}
?>
输出如下内容:
2016-01-18
2016-01-19
2016-01-18
应该只有一个2016-01-18,它应该在底部。为什么顶部会有额外的2016-01-18?
编辑:确定我将其更改为以下内容:
<?php
if ($handle = opendir('update_table_cache')) {
$dirFiles[] = $entry ;
rsort($dirFiles);
foreach($dirFiles as $entry) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != ".." ) {
$withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $entry);
echo '<a href="http://www.example.com/update_table_cache/'.$entry.'">'.$withoutExt.'</a><br>';
}
}
}
closedir($handle);
}
?>
但是这会输出:
2016-01-18
2016-01-17
2016-01-19
(我添加了另一个文件&#34; 2016-01-17.html&#34;)
答案 0 :(得分:0)
你在循环中间做输出......
首先,您对一个元素进行排序并打印,然后对两个元素进行排序并打印出来。
循环后输出。
答案 1 :(得分:0)
这是有用的:
<?php
$dir = opendir('update_table_cache'); // Open the sucker
$files = array();
while ($files[] = readdir($dir));
sort($files);
closedir($dir);
foreach ($files as $file) {
//MANIPULATE FILENAME HERE, YOU HAVE $file...
if ($file != "." && $file != ".." ){
$withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $file);
echo '<a href="http://www.example.com/update_table_cache/'.$file.'">'.$withoutExt.'</a><br>';
}
}
?>
感谢用户CBroe指出我正确的方向!