function file_list($path){
$final_result=array();
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if (is_dir($path."/".$file)) {
//echo $path."/".$file."\n";//directory
return file_list($path."/".$file);
} else {
//echo $path."/".$file."\n"; //all file
if(stripos($path."/".$file,"playlist.data"))
{
//echo $path."/".$file."\n"; //file contains "list.data"
$content = file_get_contents($path."/".$file);
preg_match_all("/([0-9]*).txt,0/",$content, $matches);
$result=array_unique($matches[1]);
$final_result=array_merge($final_result,$result);
$final_result=array_unique($final_result);
sort($final_result);
return($final_result);
}
}
}
}
}
}
print_r(file_list($argv[1]));
list.data файл, подобный этому:
1.txt
3.txt
другой list.data файл, подобный этому:
2.txt
4.txt
так что результат должен быть массивом так:
Array(
[0]=>1
[1]=>2
[2]=>3
[3]=>4
)
Я был нацелен на рекурсивный поиск в указанном каталоге файловой системы, когда я нашел имя файла с именем «list.data», я прочитал этот файл и с помощью регулярных выражений отфильтровал и массив $result
. так как у меня есть более одного "list.data", я хотел объединить каждый $result
в $final_result
. но этот скрипт ничего не выводит.
кто-нибудь может сказать мне, что-то не так с file_list
функцией.
Я выполняю этот скрипт php в режиме CLI следующим образом:
php.exe script.php "d: / test / listdir"