按字母顺序排序目录

时间:2012-04-10 01:40:12

标签: php directory

我有一些代码将目录的内容打印到网页上,似乎正在逃避我的是如何按字母顺序打印出来。

<?php

 $dir="../zpress/pages"; // Directory where files are stored

 if ($dir_list = opendir($dir))
 {
 while(($filename = readdir($dir_list)) !== false)
 if(!is_dir($filename))
 {
  ?>
  <p><a href="../zpress/pages/<?php echo $filename; ?>"><?php echo $filename;
  ?></a></p>
  <?php
  }
  closedir($dir_list);
  }

  ?>

任何建议都会受到欢迎。

3 个答案:

答案 0 :(得分:1)

$the_files = array();
while(($filename = readdir($dir_list)) !== false) {
    if(!is_dir($filename)) {
        array_push($the_files,$filename);
    }
}
sort($the_files);
foreach($the_files as $the_file) { ?>
   <p><a href="../zpress/pages/<?php echo $the_file; ?>"><?php echo $the_file;?></a></p>
<?php } ?> 

答案 1 :(得分:1)

您可以使用scandir,它将返回按字母顺序排序的目录中的所有文件

$files = scandir($dir);

foreach($files as $file) {
   // your code here
}

scandir

答案 2 :(得分:0)

您可以将整个目录列表粘贴到内存中,然后应用strnatcasecmp对列表进行排序:

$dir = ".";
$files = glob("$dir/*");
usort($files, 'strnatcasecmp');
// $files is now sorted

使用strnatcasecmp将为您提供自然大小写排序,使人类可读的输出更加人性化。请参阅此处获取解释:http://sourcefrog.net/projects/natsort/

相关问题