Autor | Zpráva | ||
---|---|---|---|
Jacobus Profil * |
#1 · Zasláno: 17. 7. 2012, 11:21:17
Dobrý den,
chtěl bych požádat o radu, mám jednoduchý kód, který by dle mého názoru fungoval, nebýt hned první řádky kde definuji cestu která se má prohledávat. Jde mi o výpis všech souborů rekurzivně ze zadané cesty. Mohl by mi prosím někdo poradit, jak definovat správně tuto cestu? Vadí poslední lomítko... <?php $main_dir="C:\Program Files\cesta\adr\adr2g\retry\"; function get_subdir_files($main_dir) { $dirs = scandir($main_dir); foreach($dirs as $dir) { if ($dir === '.' || $dir === '..') { continue; } $files=scandir($main_dir."/".$dir); foreach ($files as $file) { if ($file === '.' || $file === '..') { continue; } else { $result[]=$main_dir.'/'.$dir.'/'.$file; } } } return $result; } ?> |
||
SeparateSK Profil |
Namiesto \ použi \\
$main_dir="C:\\Program Files\\cesta\\adr\\adr2g\\retry\\"; |
||
Jacobus Profil * |
#3 · Zasláno: 17. 7. 2012, 11:50:54
Děkuji za radu, zkoušel jsem zdvojené lomítko jen na konci řetězce, toto pomohlo. Nicméně se zdá že mám ještě nějakou chybičku, cesta se mi vypisuje ok, ale nevypíše to žádný soubor, přitom tam jsou. Moc děkuji!
|
||
SeparateSK Profil |
Trochu som to upravil :)
$main_dir="C:\\Program Files\\cesta\\adr\\adr2g\\retry"; function get_subdir_files($main_dir) { $dirs = scandir($main_dir); $mdir=false; foreach($dirs as $dir) { if ($dir == '.' || $dir == '..') { $mdir=true; } if(is_dir($dir)){ $files=scandir($main_dir."\\".$dir); foreach ($files as $file) { if ($file == '.' || $file == '..') { continue; } else { if($mdir && $dir==".")$result[]=$main_dir.'\\'.$file; else if($dir!="..") $result[]=$main_dir.'\\'.$dir.'\\'.$file; } } } $mdir=false; } return $result; } $result=get_subdir_files($main_dir); for($i=0;$i<count($result);$i++){ echo $result[$i]."<br>"; } Mimochodom to lomítko na konci nemusí byť. |
||
Jacobus Profil * |
#5 · Zasláno: 17. 7. 2012, 12:08:39
Veeeelice děkuji za pomoc. :)
|
||
Joker Profil |
#6 · Zasláno: 17. 7. 2012, 12:10:56
Jacobus, SeparateSK:
Pokud úkol je: „Jde mi o výpis všech souborů rekurzivně ze zadané cesty.“, co podadresáře ve druhé (a další) úrovni (main_dir/subdir1/subdir2 atd)? Nebylo by lepší, kdyby ta funkce volala rekurzivně sama sebe? |
||
Jacobus Profil * |
#7 · Zasláno: 17. 7. 2012, 12:15:20
Tak je to stejně špatně. :) Vypíše to v pořádku podadresáře a soubory z hlavního adresáře, ale soubory podadresářů to vynechá.
|
||
ShiraNai7 Profil |
Proc to neudelat jednoduseji?
function get_subdir_files($path) { $result = array(); foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::CHILD_FIRST) as $item) { if($item->isFile()) $result[] = $item->getPathname(); } return $result; } |
||
Jacobus Profil * |
#9 · Zasláno: 17. 7. 2012, 12:24:05
ShiraNai7:
Protože první řešení funguje alespoň částečně, to snazší ne. :) |
||
ShiraNai7 Profil |
Jacobus:
Me funguje.. testoval jsem to. Samozrejme za predpokladu ze jedes na verzi PHP co neni starsi vice jak 6 let.. (!) |
||
Jacobus Profil * |
#11 · Zasláno: 17. 7. 2012, 12:33:22 · Upravil/a: Jacobus
ShiraNai7:
Zajímavé, opravdu mi to nejde. $path definujete jako: $path="C:\\Program Files\\cesta\\adr\\adr2g\\retry"; ? Žádnou php chybu mi to nevypisuje. ShiraNai7: [root@tower ~]# php -v PHP 5.3.3 (cli) (built: May 7 2012 20:13:47) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies [root@tower ~]# Pardon, nedošlo mi že tohle řeším na jiném serveru, tam je ale 5.2. |
||
ShiraNai7 Profil |
Jacobus:
A určitě máš zapnuté vypisování všech chyb? edit: stačí php 5.1 nebo novější určitě |
||
Jacobus Profil * |
#13 · Zasláno: 17. 7. 2012, 14:57:19
Opravdu vůbec žádná chyba v php err logu.
Pro jistotu mohu přiložit celý script: <?php echo "No synt. err"; $path="C:\\Program Files\\cesta\\adr\\adr2g\\retry"; function get_subdir_files($path) { $result = array(); foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::CHILD_FIRST) as $item) { if($item->isFile()) $result[] = $item->getPathname(); } return $result; } print_r($result); ?> |
||
Keeehi Profil |
#14 · Zasláno: 17. 7. 2012, 15:00:26
A co takhle třeba tu funkci zavolat co?
místo: print_r($result); print_r(get_subdir_files($path)); |
||
Jacobus Profil * |
#15 · Zasláno: 17. 7. 2012, 15:20:49
Omlouvám se, už jsem se do toho díval asi moc dlouho. Ještě jednou děkuji za pomoc všech.
|
||
Časová prodleva: 11 let
|
0