我想从目录中获得所有文件名,并按最后修改日期排序。我谷歌了一下,得到了很多答案,所以我选择了一个在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函数对它们进行排序
(这是指你链接到的问题的第一个答案)