在PHP中按字母顺序排序HTML列表

时间:2012-08-24 15:40:49

标签: php html html-lists

我的网站包含许多办公室先例的手册。当用户使用HTML上载脚本时,它会将先例上载到服务器上的文件夹。我使用以下脚本列出该特定文件夹中的所有文件。

<?php  //define the path as relative
  $dir = "./OFFICE PRECEDENTS/Business & Corporate Law"; 
  $webpath ="";  //using the opendir function  
  echo "<ol>";    
  // Open a known directory, and proceed to read its contents   
  if ($dh = opendir($dir)) {     
  while (($file = readdir($dh)) !== false) {   
  if (is_dir($dir.'/'.$file)){}      
  else if ($file == '.'){}      
  else if ($file == '..'){} 
  else if ($file == 'index.php'){}     
  else {      
  echo "<li><a href='https://manual.malicki-law.ca/$dir/$file'>$file</a></li>\n";      
  }    
  }       
  closedir($dh);     
  } 
  echo "</ol>";     
  ?>

如何实现系统按字母顺序对列表进行排序?

5 个答案:

答案 0 :(得分:2)

我相信这应该对你有帮助:

natcasesort:http://www.php.net/manual/en/function.natcasesort.php

usort:http://www.php.net/manual/en/function.usort.php带比较器功能,比较strtolower(a)和strtolower(b)

您需要先创建一个数组。

希望这有帮助。

答案 1 :(得分:2)

针对您的具体情况:如果您使用scandir()代替readdir(),则默认顺序已按字母顺序排列。

http://php.net/manual/en/function.scandir.php

第二个参数是:

  

<强> sorting_order
  默认情况下,排序顺序是按字母顺序排列的   升序。如果可选的sorting_order设置为   SCANDIR_SORT_DESCENDING,然后排序顺序是按字母顺序排列的   降序排列。如果设置为SCANDIR_SORT_NONE,则结果为   未分选的。

所以而不是:

 if ($dh = opendir($dir)) {     
   while (($file = readdir($dh)) !== false) {   
       // your code   
    }    
  }       
  closedir($dh);  

只需使用:

if ($files = scandir($dir))
{
    foreach ($files as $file) {
       // your code
    }
}

答案 2 :(得分:0)

将其保存到数组中,然后使用字母数字键代替数字键。然后,您应该能够在键上使用排序功能,并且您的值会更改为正确的顺序。然后迭代数组并再次回显它们。

有关排序数组的更多信息:http://php.net/manual/en/array.sorting.php

答案 3 :(得分:0)

<?php
$my_array = array("a" => "Dog", "b" => "Cat", "c" => "Horse");

sort($my_array);
print_r($my_array);
?>

或者您可以使用:asort,rsort,arsort

答案 4 :(得分:0)

许多方法,glob()也很好,那么你不必担心目录。

<?php 

$dir = "./OFFICE PRECEDENTS/Business & Corporate Law/";

$files = glob($dir."*.*");
sort($files);//Sort the array

echo "<ol>";
foreach($files as $file){
    if($file == $dir.'index.php'){continue;}
    $file = basename($file);
    echo "\t<li><a href='https://manual.malicki-law.ca/$dir/$file'>$file</a></li>\n";
}
echo "</ol>";
?>