opendir()
не позволяет сортировать список. Вам придется выполнить сортировку вручную. Для этого сначала добавьте все имена файлов в массив и отсортируйте их с помощью sort()
:
$path = "/path/to/file";
if ($handle = opendir($path)) {
$files = array();
while ($files[] = readdir($dir));
sort($files);
closedir($handle);
}
И , затем перечислите их, используя foreach
:
$blacklist = array('.','..','somedir','somefile.php');
foreach ($files as $file) {
if (!in_array($file, $blacklist)) {
echo "<li>$file</a>\n <ul class=\"sub\">";
}
}
С scandir()
это намного проще. Он выполняет сортировку для вас по умолчанию. Та же функциональность может быть достигнута с помощью следующего кода:
$path = "/path/to/file";
$blacklist = array('somedir','somefile.php');
// get everything except hidden files
$files = preg_grep('/^([^.])/', scandir($path));
foreach ($files as $file) {
if (!in_array($file, $blacklist)) {
echo "<li>$file</a>\n <ul class=\"sub\">";
}
}
$path = "/path/to/file";
$blacklist = array('somedir','somefile.php');
foreach (new DirectoryIterator($path) as $fileInfo) {
if($fileInfo->isDot()) continue;
$file = $path.$fileInfo->getFilename();
echo "<li>$file</a>\n <ul class=\"sub\">";
}