Autor Zpráva
Silver8000
Profil
Ahoj vsem mam takovy mensi problem se zanamem slozek pod slozek a souboru ktere jsou v nich.
Vyzkousel jsem uz vsechny moznosti funkci (DrirectoryIterator,readdir,scandir,glob) a vsechny mi delaji to same.

Priklad jak to vypada po pouziti me funce kterou mam :

Array
(
    [0] => Z:/Filmy/Agenti v suknich - Jaky otec takovy syn (2011) - (CZ)/Agenti v suknich - Jaky otec takovy syn (2011) - (CZ).mkv

)
Array
(
    [0] => Z:/Filmy/Au Pair aneb slecna na hlidani (1999) - (CZ)/Au Pair aneb slecna na hlidani (1999) - (CZ).mp4

)
Array
(
    [0] => Z:/Filmy/Babovresky (2013) - (CZ)/Babovresky (2013).avi

)
Array
(
    [0] => Z:/Filmy/Bezpecny pristav (2013) - (CZ)/Bezpecny pristav (2013) - (CZ).avi

)
Array
(
    [0] => Z:/Filmy/Blby a Blbejsi (1993) - (CZ)/Blby a Blbejsi (1993) - (CZ).avi

)
Array
(
    [0] => Z:/Filmy/Byl jednou jeden kral (1954) - (CZ)/Byl jednou jeden kral (1954) - (CZ).avi

)
Array
(
    [0] => Z:/Filmy/Certe, drz se sveho kopyta (1998) - (CZ)/Certe, drz se sveho kopyta (1998) - (CZ).mp4

)

Namisto toho bych to potreboval takhle :
Array
(
    [0] => Z:/Filmy/Agenti v suknich - Jaky otec takovy syn (2011) - (CZ)/Agenti v suknich - Jaky otec takovy syn (2011) - (CZ).mkv
    [1] => Z:/Filmy/Au Pair aneb slecna na hlidani (1999) - (CZ)/Au Pair aneb slecna na hlidani (1999) - (CZ).mp4
    [2] => Z:/Filmy/Babovresky (2013) - (CZ)/Babovresky (2013).avi
    [3] => Z:/Filmy/Bezpecny pristav (2013) - (CZ)/Bezpecny pristav (2013) - (CZ).avi
    [4] => Z:/Filmy/Blby a Blbejsi (1993) - (CZ)/Blby a Blbejsi (1993) - (CZ).avi
    [5] => Z:/Filmy/Byl jednou jeden kral (1954) - (CZ)/Byl jednou jeden kral (1954) - (CZ).avi
    [6] => Z:/Filmy/Certe, drz se sveho kopyta (1998) - (CZ)/Certe, drz se sveho kopyta (1998) - (CZ).mp4
)

Uz jsem na tim stravil asi 3 dny..

Zde je odkaz http://stackoverflow.com/questions/15054997/how-to-get-all-files-from-folders-and-subfolders-with-full-path-using-scandir odkud jsem pouzil jednu z funkci ale tohle zrovna neslapalo jak jsem predpokladal tak jsem to malinko predelal na toto:
<?php
set_time_limit(0);
function listFolderFiles($dir){
$WebVideoRootAllowedFileExtension = array('flv','3gp','mp4','avi','mkv');
$WebVideoRootDisallowedContent = array('.','..','Thumbs.db');
$WebScanDir = scandir($dir);
    $i = 0;
    $list = array();

foreach($WebScanDir as $WebDir){
if(!in_array($WebDir,$WebVideoRootDisallowedContent)){
if(is_dir($dir.$WebDir)){
$WebVideoContentPath = $dir.$WebDir.'/';
listFolderFiles($WebVideoContentPath);
}else{
$WebVideoContentPath = $dir.$WebDir;
}

}else{
$WebVideoContentPath='';
}
if ($WebVideoContentPath==true and in_array(end(explode('.',basename($WebVideoContentPath))),$WebVideoRootAllowedFileExtension)){
$list[] = $WebVideoContentPath."\n";
}

}
print_r($list);
}

listFolderFiles('Z:/');
?>

Prosim pomozte uz nevim jak dal.
Predem diky
aDAm
Profil
musíš si do té funkce přidat nějakou návratovou hodnotu a o tu pak iterovat výsledek a print si dát až na konci kde to voláš:

function listFolderFiles($dir){
  ...
    if(is_dir($dir.$WebDir)){
      $WebVideoContentPath = $dir.$WebDir.'/';
      $list2 = listFolderFiles($WebVideoContentPath);
      
      $list = array_merge($list, $list2);
    }else{
      $WebVideoContentPath = $dir.$WebDir;
    }
  ...
  return $list;
}

$list = listFolderFiles('Z:/');

print_r($list);
Silver8000
Profil
Tak jsem to vyresil jinak.
A tady je vysledek :

<?php
set_time_limit(0);
function WebVideoFiles($dir){
$WebVideoRootAllowedFileExtension = array('flv','3gp','mp4','avi','mkv');
$WebVideoRootDisallowedContent = array('Serialy');
$WebScanDir = glob($dir.'*');
$WebVideoFolderList = '';

foreach($WebScanDir AS $WebVideoFolder){
if(!in_array(basename($WebVideoFolder),$WebVideoRootDisallowedContent)){
if(is_file($WebVideoFolder)){
if(in_array(end(explode('.',basename($WebVideoFolder))),$WebVideoRootAllowedFileExtension)){
$WebVideoFolderList .= $WebVideoFolder.'|</\>|';
}

}

if(is_dir($WebVideoFolder)){
$WebVideoFolderList .= WebVideoFiles($WebVideoFolder.'/');
}

}

}
return $WebVideoFolderList;
}
function WebVideoFilesFilterArrayList($WebVideoFolderCreateList){
return array_filter(explode('|</\>|',WebVideoFiles($WebVideoFolderCreateList)));
}
print_r(WebVideoFilesFilterArrayList('Z:/'));
?>

Nechal jsem vsechny hodnoty spojit a pak rozdelit s odstranenim prazdne hodnoty.

Ted to facha jak jsem puvodne zamyslel.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: