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

时间:2014-07-26 16:09:02

标签: php

我想从目录中获取所有文件名,并按上次修改日期排序。 我用Google搜索并获得了很多答案,因此我从sort files by date in 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。我得到了所有文件,但是使用绝对路径,即&#34; c:\ wamp \ www / XMLdata / xxxx.xml&#34;,我只想要文件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);
?>

2 个答案:

答案 0 :(得分:1)

为什么要打扰.. 这就是我的所作所为:

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

如果您确定可以找到&#39; /&#39;:

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

答案 1 :(得分:0)

抱歉 - 是的数组$ files将在目录./

中包含文件名
for ($i = 0; $i < sizeof($files); $i++) {
    echo $files[$i];
} 

将返回所有文件名 - 您只需要在排序时使用filemtime函数

(这是参考您链接的问题中的第一个答案)