php中获取目录下的文件名并进行排序

2016年6月1日建站历程 原创教程1 6,9461

爱折腾的人,永不止息。一直喜欢自定义主题和插件,之前的会员系统更改,也让我学到好多代码。文章源自狐狸影视城-https://fox-studio.net/31589.html

最近在写一个插件,目的用来在线修改php文件。还未完成,暂不做介绍。放几个图,自己体会下。文章源自狐狸影视城-https://fox-studio.net/31589.html

php中获取目录下的文件名并进行排序文章源自狐狸影视城-https://fox-studio.net/31589.html

php中获取目录下的文件名并进行排序文章源自狐狸影视城-https://fox-studio.net/31589.html

php中获取目录下的文件名并进行排序文章源自狐狸影视城-https://fox-studio.net/31589.html

 文章源自狐狸影视城-https://fox-studio.net/31589.html

恩,还没完善。文章源自狐狸影视城-https://fox-studio.net/31589.html

 文章源自狐狸影视城-https://fox-studio.net/31589.html

其中遇到一个棘手的问题,百度少都很少,就是从php中获取路径目录下的文件数量,并进行排序。前者好说,简单。文章源自狐狸影视城-https://fox-studio.net/31589.html

  1. $file_url=dirname(__FILE__).'/log_folder';    //目录路径,dirname(__FILE__)为当前php所在目录。也就是我写插件的根目录,通目录下有个log的日志文件夹
  2. $handle = opendir($file_url);   //打开目录句柄
  3. while (($file=readdir($handle))<>"") {  //读取文件名到数组
  4.     if($file !== '.' && $file != '..')    //不知道为何,遍历出来的数组中会有两个点,只好用if去掉了。
  5.     {
  6.         echo "文件名是:$file<br>";
  7.     }
  8. }

就这样,你可以获得 $file_url 路径下的目录的名称显示了。但更棘手的是目录文件的排序问题。文章源自狐狸影视城-https://fox-studio.net/31589.html

我想让最新的文件排最上方,可是php中并不好使。只百度到了文章源自狐狸影视城-https://fox-studio.net/31589.html

  1. /*
  2. $file_url 路径;
  3. $file 文件名;
  4. */
  5. $filedate = filemtime("$file_url/$file");   //文件日期

问题是,这个日期并非文件的某个属性,可以直接调用。就这里这么了我好久,最后想到,既然文件的日期算出来了。再遍历出文件名,进行匹配,写入数组。文章源自狐狸影视城-https://fox-studio.net/31589.html

键名用时间,键值用文件名。这样的话,在通过 arsort() 函数进行升序排列。就可以匹配到排序后的文件列表。文章源自狐狸影视城-https://fox-studio.net/31589.html

最终代码如下:文章源自狐狸影视城-https://fox-studio.net/31589.html

  1. $file_url=dirname(__FILE__).'/log_folder';  //路径目录
  2. $handle = opendir($file_url);   //打开目录句柄
  3.     $dir = array();     //声明一个数组
  4.     while (($file=readdir($handle))<>"")
  5.     {       //遍历文件名到数组
  6.         if($file !== '.' && $file != '..')          //排除多余的不知道为什么会出现的两组小数点
  7.         {
  8.             $filedate = filemtime("$file_url/$file");       //文件日期
  9.             $fileArr[$file] = $filedate;    //写入数组,键名=>键值
  10.         }
  11.     }
  12.     arsort($fileArr);   //排序
  13.     $numberOfFiles = sizeOf($fileArr);  //数组中数量
  14.     for($i=0;$i<$numberOfFiles;$i++)
  15.     {   //循环出文件名序列
  16.         $thisFile = each($fileArr);     //返回键值和键名,赋值给函数
  17.         $thisName = $thisFile[0];       //函数的一维就是文件名,函数的第二维是时间 $timeTime = $thisFile[1];
  18.         /*$thisName = iconv("GBK","UTF-8",$thisName);       //如果乱码,启用此项 */
  19.         echo "<li><p>$thisName</p></li>";               //得出文件名序列
  20.     }
  21.     closedir($handle);  //关闭目录句柄

 文章源自狐狸影视城-https://fox-studio.net/31589.html

期待插件的完成吧,自己感觉屌屌的。。。。文章源自狐狸影视城-https://fox-studio.net/31589.html

weinxin
千年骚狐
  • 本文由 发表于 2016年6月1日
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
评论:1   其中:访客  1   博主  0
    • smartweb.cn
      smartweb.cn 0

      还行,能用

    匿名

    发表评论

    匿名网友 填写信息

    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

    确定