按最后修改日期对文件排序,获取文件名(而不是绝对路径)


Sort file by last modified date, get the file name( not absolute path)

我想从目录中获得所有文件名,并按最后修改日期排序。我谷歌了一下,得到了很多答案,所以我选择了一个在PHP中按日期排序文件

<?php
$files = array();
$dir = getcwd();
$dir = dirname($dir);  //get Parent directory
$dir .= "/XMLdata/*.xml";
$files = glob($dir);
usort($files, function($a, $b) {
    return filemtime($a) < filemtime($b);
});
    header('Content-type: application/json');
    echo json_encode($files);
?>

从上面的代码中,我可以从目录XMLdata中获得所有xml文件,但是,从结果$files中。我得到了所有的文件,但有绝对路径,这是"c:'wamp'www/XMLdata/xxxx.xml",我只想要文件xxxx.xml。我可以在javascript中使用正则表达式来处理它,但我认为一定有更好的方法来获取文件名。谁能帮帮我,谢谢。

如果没有好的方法,我可以使用

           str = result[numberIndex];//one of absolute path from php
           var array = str.split("/");
           str = array[array.length - 1];

我可以得到正确的文件名。

来自@born loser的想法

<?php
$files = array();
$dir = getcwd();
$dir = dirname($dir);  //get Parent directory
$dir .= "/XMLdata/*.xml";
$files = glob($dir);
usort($files, function($a, $b) {
    return filemtime($b) < filemtime($a);
});
foreach($files as &$value)
{
     $value = substr($value,strrpos($value,'/')+1);
}
    header('Content-type: application/json');
    echo json_encode($files);
?>

何苦…我是这样做的:

$i = strrpos($_SERVER['PHP_SELF'],'/');
define('URLBASE',   substr($_SERVER['PHP_SELF'],0,$i+1));

如果你能确定找到一个'/':

$sFile = substr($sPath,strrpos($sPath,'/')+1);

对不起-是数组$files将包含目录中的文件名。/

for ($i = 0; $i < sizeof($files); $i++) {
    echo $files[$i];
} 

将返回所有文件名—您只需要使用filemtime函数对它们进行排序

(这是指你链接到的问题的第一个答案)