| 20.06.2009, 17:30 | Metal | найти в данной папке все картинки (JPG) рекурсивно и вывести пути на экран.
решения для шелла не предлагать. |
| 20.06.2009, 18:09 | capitan | $dir = "images";
foreach (scandir($dir) as $f){
if (preg_match("/\.jpg/", $f))
echo "$dir/$f\r\n";
} |
| 21.06.2009, 01:18 | JMen | $dir = "images";
foreach (scandir($dir) as $f){
if (preg_match("/\.jpg/", $f))
echo "$dir/$f\r\n";
}
твой не рекурсивный и не отличает окончания от части слова. Правильно будет примерно так:
$exts = array(
'jpg' => 1,
'jpeg' => 1,
);
function readDirMy($folder) {
global $allFiles;
$files = glob($folder.'/*');
foreach ($files as $file)
if (is_dir($file))
readDirMy($file);
else
$allFiles[] = $file;
}
readDirMy(dirname(__FILE__));
foreach ($allFiles as $fileName) if (
strpos($fileName, '.') !== false &&
key_exists(strtolower(substr($fileName, strpos($fileName, '.') + 1)), $exts))
echo $fileName."<br>\n"; |
| 21.06.2009, 01:37 | [[seomafia]] | есть же функция glob ))
<?php
$dira = 'images';
$files_array = glob($dira.'/*.jpg');
foreach($files_array as $file) {
echo trim($file).'<br>';
}
?> |
| 21.06.2009, 01:41 | JMen | вот смотрю я на вас и думаю... нафиг вам php? :) берите смело букварь! :) |
| 21.06.2009, 01:53 | [[seomafia]] | вот смотрю я на вас и думаю... нафиг вам php? :) берите смело букварь! :)
Это ты к чему? К тому что ты в 5 раз больше мусора написал в своем скрипте? :pardon: |
| 21.06.2009, 02:03 | JMen | ];172866']Это ты к чему? К тому что ты в 5 раз больше мусора написал в своем скрипте? :pardon:
Это я к тому что твой скрипт не рекурсивный. |
| 21.06.2009, 02:49 | capitan | Это я к тому что твой скрипт не рекурсивный.
рекурсия не нужна для вывода картинок из папки. |
| 21.06.2009, 02:52 | JMen | не, долбаёб - ты :) а я умный :)
В папке могут быть другие папки. И рекурсия нужна чтобы из всех подпапок данной папки (а так - же из подпапок подпапок) так - же выдернуть картинки :) |
| 21.06.2009, 02:57 | capitan | не, долбаёб - ты :) а я умный :)
В папке могут быть другие папки. И рекурсия нужна чтобы из всех подпапок данной папки (а так - же из подпапок подпапок) так - же выдернуть картинки :)
про подпапки в задании ничего не сказано, речь идёт только о папке: "найти в данной папке все картинки (JPG)" |
| 21.06.2009, 03:00 | JMen | в задании написано рекурсивно, это подразумевает именно то что я сказал и написал. Перестань со мной общаться в подобном тоне, и впредь батьке перечить не смей. |
| 21.06.2009, 03:05 | capitan | в задании написано рекурсивно, это подразумевает именно то что я сказал и написал. Перестань со мной общаться в подобном тоне, и впредь батьке перечить не смей.
купи себе новые очки |
| 21.06.2009, 03:15 | Bes | capitan и зря ты так...JMen мудрый мужик и помогал тут многим..
И вобще без мата давайте. |
| 21.06.2009, 03:21 | capitan | capitan и зря ты так...JMen мудрый мужик и помогал тут многим..
И вобще без мата давайте.
неудавшихся Дартаньянов из себя обычно корчат не мудрые, а мудаки :d |
| 21.06.2009, 03:33 | mr. werewolf | ну хз, имхо JMen прав... в задание указано чтоб делалось это рекурсивно... |
| 21.06.2009, 03:35 | Lucas | capitan и зря ты так...JMen мудрый мужик и помогал тут многим..
И вобще без мата давайте.
+100500 за JMen'a! capitan за 2 топика на ебланилку по полной заработал |
| 21.06.2009, 03:57 | capitan | пусть будет по вашему, остаюсь при своём мнении. Хотел лишь помочь ТС-у |
| 21.06.2009, 09:46 | deschain | Ебланить за наезды и оскорбления! |
| 21.06.2009, 09:59 | yami | это к тому, что ты долбоёб, и рекурсия не нужна для вывода картинок из папки.
охуенная помощь, ага.
+1 за JMen. |
| 21.06.2009, 10:17 | crazymachine | Рекурсия точно упомянута, +1 за JMen'a |
| 21.06.2009, 11:53 | Hector | capitan быдло какое-то, научись общаться |
| 21.06.2009, 13:33 | ewolwer | рекурсия указана, +1 за гугл, мир, деньги!))
из матов можно употреблять только слово "лифчик" )) |
| 21.06.2009, 15:09 | capitan | Yami, Hector
Следите сами товарищи за базаром:
1)человек попросил помощи;
2)я дал абсолютно верное решение его задачи, аналогичное и также абсолютно верное решение поставленной задачи дал [[seomafia]];
3)в это время в беседу вклинивается JMen с решением совершенно другой задачи про подпапки и при этом в хамской манере школьника-выскочки поучает "нафиг вам php? берите смело букварь!"
:gofuck: |
| 21.06.2009, 15:25 | creator123 | забаньте уже неадеквата, пока он не прочитает первый пост в этой теме вслух 500 раз. |
| 21.06.2009, 15:27 | [[seomafia]] | Да ладно, Jmen первый начал вы*бываться. |
| 21.06.2009, 15:28 | capitan | забаньте уже неадеквата, пока он не прочитает первый пост в этой теме вслух 500 раз.
Вот и читай, читать умеешь? "в данной папке", а не в "данных папках и их подпапками и подпапками подпапок и ваще всём дереве каталогов"
[[seomafia]] +1 |
| 21.06.2009, 15:33 | creator123 | иди учи учебник по слову "рекурсивно". Достал уже. чесслово. |
| 21.06.2009, 15:53 | capitan | иди учи учебник по слову "рекурсивно". Достал уже. чесслово.
Умник, "рекурсивно" - это предполагаемый подход к алгоритму, а задача поставлена - "в данной папке". Это действительно можно сделать рекурсивно (другими словами - через жопу), но для поиска файлов в данной папке это лишнее. |
| 21.06.2009, 16:07 | deschain | Капитан,
"в данной папке ... рекурсивно"
есть папка:
/folder/
в ней есть подпапки:
/folder1/
/folder2/
...
Ну и где ты тут прав? Поиск осуществляется рекурсивно в текущей папке, с проходом по вложенным папкам и поиском там. |
| 21.06.2009, 16:44 | JackL | На питоне что то вроде этого будет )) но я проеб с raw strings работать вроде не будет))
import os, re
def lister(yourpath, file_list):
a = os.listdir(yourpath)
for item in a:
if os.path.isdir(item):
k = r'%s/%s'%yourpath, item
lister(k, file_list)
elif os.path.isfile(item) and re.match(".*(jpg|png)$", r'item'):
file_list.append(r'%s/%s' % yourpath,item)
else:
pass
return(file_list)
File_list = []
yourpath = r'/usr/home'
lister (yourpath, File_list)
# теперь со списком можно что хочешь делать (в файло или на экран)
print File_list |
| 21.06.2009, 16:46 | JackL | и еще ретурн впринципе там не нужен / он список и так будет модифицировать |
| 21.06.2009, 16:49 | LeXxiK | на форуме две недели, а уже матом кроет, +1 к заебланить! |
| 21.06.2009, 16:51 | capitan | Капитан,
"в данной папке ... рекурсивно"
есть папка:
/folder/
в ней есть подпапки:
/folder1/
/folder2/
...
Ну и где ты тут прав? Поиск осуществляется рекурсивно в текущей папке, с проходом по вложенным папкам и поиском там.
1 файл может находиться только в 1 папке. Если файл находится в папке folder1, то он не находится в папке folder. Речь шла конкретно о файлах из папки folder. Иначе задача была бы сформулирована соответствующим образом - "в папке и во всех вложенных по отношению к ней подпапках". |
| 21.06.2009, 16:52 | capitan | на форуме две недели, а уже матом кроет, +1 к заебланить!
то есть матом можно крыть только если на форуме находишься продолжительное время? Где такое в правилах? :d
Ок, потёр матюк, который так несказанно возмутил высококультурное сообщество форума :)) |
| 21.06.2009, 16:55 | JackL | Capitan человек имел ввиду все файлы находящиеся в папке и во всех папках находящихся во всех дочерних папках - это и значит рекурсия |
| 21.06.2009, 16:57 | capitan | Capitan человек имел ввиду все файлы находящиеся в папке и во всех папках находящихся во всех дочерних папках - это и значит рекурсия
я то понял, что ты имел ввиду, но задача другая поставлена. Если ТС-ом имелось ввиду именно это, то следует чётче формулировать задачу, чтобы не возникало неоднозначных трактовок. |
| 21.06.2009, 17:11 | yami | я то понял, что ты имел ввиду, но задача другая поставлена. Если ТС-ом имелось ввиду именно это, то следует чётче формулировать задачу, чтобы не возникало неоднозначных трактовок.
ты читать умеешь? "рекурсивно в этой папке" = "в папке и во всех вложенных по отношению к ней подпапках". прочитай значение этого слова уже. |
| 21.06.2009, 17:47 | Andro | 1 файл может находиться только в 1 папке. Если файл находится в папке folder1, то он не находится в папке folder.
Это зависит от файловай системы))
Речь шла конкретно о файлах из папки folder. Иначе задача была бы сформулирована соответствующим образом - "в папке и во всех вложенных по отношению к ней подпапках".
чувак, когда говорят "осуществить рекурсивный поиск в дире", имеется введу "осуществить поиск в текущей дире и всех вложенных дирах". Так что задача была поставленна коротко и четко, просто ты ее не понял... |
| 21.06.2009, 18:29 | deschain | capitan, даже если ТС имел ввиду поиск в одной папки, без прохода рекурсией по подпапкам, и именно твоя версия верна, то я всё равно в даной ситуации ты перегнул палку с матами и оскорблениями.
ЖМен никак не оскоблял, прочти ещё раз его мессагу, ты же накинулся с матами, оскоблениями и продолжил это в следующих своих сообщениях. Это не круто, чувак. Достаточно было отшутиться или написать что-либо с более спокойной формулировкой. А так ты сам себе здесь жизнь усложнил, к сожалению. |
| 21.06.2009, 23:20 | JMen | ты читать умеешь? "рекурсивно в этой папке" = "в папке и во всех вложенных по отношению к ней подпапках". прочитай значение этого слова уже.
Это бесполезно... Для него важно отстоять тот факт что он прав, а я (и все кто с ним не согласен) мудаки :) Предмет обсуждения и смысл терминов в данном случае не имеют значения. Т.е. единственное что можно сделать - игнорировать.
ТС явно осознаёт что значит рекурсия, да и непонятно почему в аську не стукнулся, я ему, помнится, что - то уже писал так - же, вечерком, на халяву. |
| 22.06.2009, 17:45 | adultru | имеется виндоус програмка-конект по фтп к хосту где лежат папки с пикчами сохраняется пути просто урл ставишь в поле и в текствике сохраняются пути к картинкам
если интересует пиши в пм |
| 26.06.2009, 10:15 | seoengineer | <?php
header('Content-Type: text/plain');
function recursive($dir) {
foreach(glob($dir.'*') as $fname) {
if(is_dir($fname)) recursive($fname.DIRECTORY_SEPARATOR);
if(preg_match('/\.(jpg|jpeg)$/i', $fname)) print $fname."\n";
}
}
recursive(getcwd());
?> |
Работает на vBulletin® версия 3.8.4. Copyright ©2000-2010, Jelsoft Enterprises Ltd. Перевод: zCarot
|