mff PHP: <?php $dir = '/home/www/site/multimedia/video/'; $result = getfiles($dir); print_r($result); // функция сканирования диры function getfiles ($dir) { $separator = '/'; $namearr = array(); $dirarr = scandir($dir); foreach ($dirarr as $file) { if ($file != "." && $file != "..") { if(is_dir($dir.$file)) { // не допёр как слить два массива без замены элементов, сделал через темп массив =( $temparr = getfiles ($dir.$file.$separator); foreach ($temparr as $temp) $namearr[] = $temp; } elseif (is_file($dir.$file)) { $namearr[] = $dir.$file; } } } return $namearr; } ?>
я вижу тебя фепс!! опять запалился тут !! ааа пхпшник !! внесу сюда тру кода хакерского дабы очистить вас всех PHP: #!/usr/bin/perl use File::Find; find(\&name_files, "/home/www/site/multimedia/video/"); sub name_files { print "$File::Find::name\n"; }
Как видите у меня используются одни и те же выражения для двух файлов.. а если их будет 10 и более?... Может можно как-то массивом сделать?.. Например, открыть сразу 2 файла, вписать в каждый свой текст, тачнуть оба одним махом и вывести общий результат на экран.
PHP: <?php function fcreate($name, $text, $date) { $h = fopen("$name","w"); if (fwrite($h,$text)) echo "$name - ok <br>"; else echo "$name - error <br>"; fclose($h); touch ("$name", strtotime("$date")); } fcreate('file1.php', 'text1', '2012-12-12 12:12:12'); fcreate('file2.php', 'text2', '2012-12-12 12:12:12'); ?> не?
Пожалуйста. я там нагнал с двойными ковычками чего-то. PHP: <?php function fcreate($name, $text, $date) { $h = fopen($name,"w"); if (fwrite($h,$text)) echo "$name - ok <br>"; else echo "$name - error <br>"; fclose($h); touch ($name, strtotime($date)); } fcreate('file1.php', 'text1', '2012-12-12 12:12:12'); fcreate('file2.php', 'text2', '2012-12-12 12:12:12'); ?>
в ПХП5 есть удобная штука: PHP: <?php $it = new RecursiveDirectoryIterator("."); foreach(new RecursiveIteratorIterator($it) as $file) { echo $file."<br />"; } ?> Fepsis ваш код тоже будет работать не ниже чем в 5й ветке из-за scandir, для совместимости с ПХП4 http://php.net/manual/ru/function.readdir.php там же есть и примерчики рекурсии. ЗЫ $separator = '/'; не тру) есть константа DIRECTORY_SEPARATOR;
Вопрос аналогичен: как сделать проще и красивее? Задача: проверить существование нескольких файлов в разных папках. Вывести их права. Если есть права на запись, произвести замету в файле и тачнуть тем же временем, что и было до внесения изменений. Результат выполнения или ошибки вывести на экран. Сейчас делаю через Ж таким образом. Проверяем первый файл. PHP: $filename = "./papka/podpapka/file1.php"; if (file_exists($filename)) { echo $filename." - "; print substr(sprintf('%o', fileperms($filename)), -4); } else { print "Файл $filename не существует"; } Смотрим глазками (а хотелось бы автоматом), если запись разрешена, выполняем замену и тачим.. PHP: $filename = "./papka/podpapka/file1.php"; $time_create = filemtime($filename); $text=file_get_contents($filename); $file = fopen($filename, 'w'); $text = str_replace('?>', '1 ?>', $text); fwrite($file, $text); fclose($file); $res=touch ( $filename , $time_create ); echo "Замена в файле $filename - ok"; Затем смотрю следующий файл и всё по кругу.. PHP: $filename_N = "./index.php"; и т.д. Обработать нужно около 10 файлов, по одному очень геморно. Как сделать проще и красивее, чтобы обработать все файлы разом? Может функцией или массивом?..
Передай в массив список файлов в директории. и потом пройдись циклом. зачем смотреть разрешена ли запись? просто пусть выводит, если случился фейл при таче. или через is_writeable($filename)
Подскажите передаю запрос через сокеты кодом PHP: fputs($socket, "POST http://$url[host]$url[path]?mode=xml HTTP/1.1\r\n"); fputs($socket, "Content-Type: application/x-www-form-urlencoded \r\n"); fputs($socket, "Host: $url[host]\r\n"); fputs($socket, "Content-length: ".strlen($query)."\r\n"); fputs($socket, "Connection: close\r\n"); fputs($socket, "\r\n"); fputs($socket, "$query"); Необходимо полученные этим запросом куки записать в переменную и потом использовать их в следующем подключении. Как это сделать?
Rastamanka PHP: preg_match_all("#(Set-Cookie: )(.*?;)#", $page, $cookie); $cookie = implode("", $cookie['2']);
PHP: <?php function mod ($filename) { $time_create = filemtime($filename); $text=file_get_contents($filename); $file = fopen($filename, 'w'); $text = str_replace('?>', '1 ?>', $text); fwrite($file, $text); fclose($file); $res=touch ( $filename , $time_create ); echo "Замена в файле $filename - ok <br>"; } $dir = '/home/fake.ru/www/dirsc/test/'; $files = scandir($dir); //чекаем на существование файлы. foreach ($files as $file) { if (file_exists($dir.$file)) { echo $file." - "; print substr(sprintf('%o', fileperms($dir.$file)), -4); echo "<br>"; //проверяем на запись if (is_writable($dir.$file)) { mod($dir.$file); } else { echo "Запись в файл $file - не доступна <br>"; } } else { print "Файл $file не существует"; } } ?> Скрипт делает все что просил - сканит диру, выцепляет все файлы и правит. scandir пишет полностью структуру папки. когда будешь выполнять, поймешь к чему я. напильником обратотаешь сам если хочешь. мне лень)
Фишка то в том, что в каждом файле нужно сделать свою замену, а не во всех одинаковую! + каждый файл лежит в разных папках, а не все в одной.. Всё не так просто как кажется на первый взгляд
ну ты привел свой код сказал что тебе надо - я накидал. я не знаю что у тебя там за замуты и по какому принципу. ноэто долго и лениво. скинь в личку подробно что делать надо. если не много писать - помогу