Здравствуйте! Просматривал урок по php и делал всё в точности как было показано в уроке. Полностью скопировал код как говорится от точки до точки. Только вот проблема в том, что на видео уроке список содержимого директории выводится с прочерками перед название, а названия папок жирным начертанием и в квадратных скобках. А у меня выводится просто список без чёрточек, жирности и т.д. Помогите понять почему это так. Вот код: Код (PHP): <?php function dirs($dir, $tab) { $d = opendir($dir); while ($name = readdir($d)) { if ($name == "." or $name == "..") continue; if (is_dir($name)) { echo "<b>" . $tab . "[$name]</b><br>"; $tab .= '-'; dirs($dir . "/$name", $tab); } else echo "$tab$name<br>"; } closedir($d); } dirs("C:/Windows/", ""); ?>
Функция is_dir проверяет короткое имя, что получили с помощью opendir, в текущей директории. Либо нужно ей давать имя с путём. Чтобы сделать директорию текущей, нужно вызвать chdir. Попробуй так Код (PHP): <?php function dirs($dir, $lvl=0) { $d = opendir($dir); chdir($dir); while (false !== ($name=readdir($d))) { if ($name == "." or $name == "..") continue; if (is_dir($name)) { echo str_repeat("-",$lvl),"<b>[$name]</b><br>\n"; $lvl++; dirs($dir."/$name", $lvl); $lvl--; }else echo str_repeat("-",$lvl),"$name<br>\n"; } chdir(".."); closedir($d); } dirs("g:/папка", 0); Не рекомендую экспериментировать с директорией C:/Windows/ Возможно, это особенность работы opendir под Виндовс. Надо проверить на nix-ах.
Владелец у каталогов, либо прав нету). На никсах аналогично будет. Опять же смотря какой софт стоит и как настроен веб-стек. Если стоит jailkit то opendir нормально сработает.
Код (PHP): function dirs($dir,$path=false) { foreach(glob($dir.'*') as $key => $val) { $name=$path?$val:str_replace($dir,'',$val); if(is_dir($val)) { echo nl2br('<strong>'.$name.'</strong> '); dir($val); } else { echo nl2br($name.' '); } } } Код (PHP): dirs('C:/Windows/'); FaxSetup.log Fonts Help Installer IsUninst.exe Код (PHP): dirs('C:/Windows/',true); C:/Windows/FaxSetup.log C:/Windows/Fonts C:/Windows/Help C:/Windows/Installer C:/Windows/IsUninst.exe