Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Рекурсивно получить список вложенных директорий. (https://forum.antichat.xyz/showthread.php?t=123313)

Велемир 02.06.2009 19:58

Рекурсивно получить список вложенных директорий.
 
Опять не пройти уровень(:

PHP код:


<?php

@set_time_limit(0);

global 
$fp;

$fp fopen("log.txt","w");

function 
scan($bs '') {

$dir opendir("C:/Program Files/VertrigoServ/www/com_clickheat");

while ((
$s readdir($dir)) !== false) {

if(
is_dir($s) and $s != "." and $s != "..") {

fwrite($fp,$s."\r\n");

scan($bs."\".$s);

}

}

fclose(
$fp);

}



scan();


?>

Должна быть рекурсия...и она есть.Но почему ничего не записывается в фаил я ума не приложу).

ЗЫ: никогда подобного ранее не делал))

попугай 02.06.2009 20:19

$dir = opendir("C:\\Program Files\\VertrigoServ\\www\\com_clickheat");

или

$dir = opendir("C:/Program Files/VertrigoServ/www/com_clickheat");

NOmeR1 02.06.2009 20:27

имхо - подправь
Код:

function scan($bs = '') {
и пониже
Код:

$dir = opendir("C:\Program Files\VertrigoServ\www\com_clickheat\".$bs);
и пониже
Код:

scan($bs.'\'.$s);

krypt3r 02.06.2009 21:31

Мда, кульный код в первом посте =) Файл открывается при каждом вызове функции, открывается один и тот же каталог =) Рекурсией мало пахнет

Велемир 03.06.2009 01:40

Если использовать '',то выдаёт ошибку.Пример я частично вообще отсюда брал:

http://articles.org.ru/cfaq/index.php?qid=1917

Весь день убил на эту гребаную функцию...охренеть.

Ru}{eeZ 03.06.2009 02:15

переменную нужно объявлять глобальной в самой функции и не нужна тут рекурсия
PHP код:

<?php

@set_time_limit(0);

$fp fopen("log.txt","w");

function 
scan($bs '') {

global 
$fp;

//$dir = opendir("C:/Program Files/VertrigoServ/www/com_clickheat"); 
$dir opendir('.'); 

while ((
$s readdir($dir)) !== false) {

if(
is_dir($s) and $s != "." and $s != "..") {

fwrite($fp,$s."\r\n");

}

}

fclose($fp);

}



scan();


?>

п.с. http://forum.antichat.ru/showpost.php?p=1306831&postcount=786 там нужна рекурсия

мой вариант:

PHP код:

<?php
$addr 
'.';
$logFile 'log.txt';
$fp fopen($logFile,'w');
$dir opendir($addr); 
while (
$obj readdir($dir)) {
  if(
is_dir($obj) && $obj != "." && $obj != ".."fputs($fp,$obj."\r\n");
}
fclose($fp);
?>


Велемир 03.06.2009 03:12

Можно клоцать))Много пищи для размышлений будет )

Велемир 03.06.2009 03:15

Ru}{eeZ,первый вариант не катит,ибо выдаёт листинг директорий только.

Pashkela 03.06.2009 03:17

Вообще-то есть гугл и античат, стыдно господа

Велемир 03.06.2009 03:18

У меня вопрос:

при использовании scan($obj) в function scan($dir = '.') подставляется $obj или остаётся '.' ?


Время: 12:56