2012-04-10 68 views
1

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

<?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

你可以看看SCANDIR – 2012-04-10 01:49:26

回答

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 } ?> 
+0

我想这一点,但它结束了没有网页上显示任何内容。 – user1309522 2012-04-10 03:00:19

0

可以发出声音的整个目录列表到内存中,然后应用strnatcasecmp对列表进行排序:

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

使用strnatcasecmp会给你在自然情况下的排序顺序,使更多的人可读输出。在这里看到的解释:http://sourcefrog.net/projects/natsort/

1

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

$files = scandir($dir); 

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

scandir

+0

'scandir'按字母顺序升序排列)默认情况下不需要'sort':http://php.net/scandir – leepowers 2012-04-10 01:53:06

+0

@ powers1感谢您提及!将编辑 – 2012-04-10 01:57:33

+0

大概简洁的答案。如果你实施他的案子,会更好地回答,但这样做更符合教学法,因为他必须处理代码。 – 2012-04-10 02:02:02