我有一些代码将目录的内容打印到网页上,似乎正在逃避我的是如何按字母顺序打印出来。
<?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);
}
?>
任何建议都会受到欢迎。
答案 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
}
答案 2 :(得分:0)
您可以将整个目录列表粘贴到内存中,然后应用strnatcasecmp
对列表进行排序:
$dir = ".";
$files = glob("$dir/*");
usort($files, 'strnatcasecmp');
// $files is now sorted
使用strnatcasecmp
将为您提供自然大小写排序,使人类可读的输出更加人性化。请参阅此处获取解释:http://sourcefrog.net/projects/natsort/