2014-07-26 36 views
0

我想从目录中获取所有文件名,并按最后修改日期排序。 我用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文件,但是,从结果$文件。我得到所有的文件,但绝对路径是“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失败者

理念

<?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); 
?> 
+0

http://stackoverflow.com/questions/2667065/sort-files-by-date-in-php – Herb

+0

是的,我从那里得到答案,我说 – yongnan

+0

我可以使用像这样的函数:array = path.split(“/”); array [array.length - 1];以获得文件名,但我认为这不是一个好方法 – yongnan

回答

1

何必呢.. 这是我做的:

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

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

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

谢谢,但我不知道如何添加您的代码行。在处理每条绝对路径后,我可以获得正确的文件名。 – yongnan

+0

??? \t foreach($ files AS $ sPath) \t { \t \t $ sFile = subst($ fPath,...); \t} –

+0

谢谢,我使用foreach($文件为&$值) { $ value = substr($ value,strrpos($ value,'/')+ 1); }。 – yongnan

0

对不起 - 是数组$文件将在目录中有./

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

将返回所有的文件名文件名 - 你只需要在排序它们时使用filemtime函数玩弄

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

+0

谢谢,实际上,我尝试了第一个,但没有得到结果。我想在ksort后,我们可以得到按日期排序的数组。 $ dir = getcwd(); $ dir = dirname($ dir); $ dir。=“/ XMLdata”;如果($ handle = opendir($ dir)){ while(false!==($ file = readdir($ handle))){ if($ file!=“。”&& file file!=“.. “){ $ files [filemtime($ file)] = $ file; } } closedir($ handle); ksort($ files); } header('Content-type:application/json'); echo json_encode($ files); ?> – yongnan

相关问题