Я написал следующую функцию для рекурсивного поиска всех файлов, не начиная с ~. Но это не сработает. На самом деле это только кажется, чтобы найти те, которые начинаются с ~Не могу получить glob, чтобы найти все файлы, не начиная с ~
function rfl($dir) {
$search=$dir."[^~]*";
echo "searching for: $search<br/>";
$search=glob($search); //find every file and directory not starting with ~. directories are returned with/afterwards
$list=array();
foreach ($search as $file) {
if (is_dir($file)) {
$list=array_merge($list,rfl($file.'/')); //recursively search for valid files in directories
echo 'D: ' . $file.'<br/>';
} else {
$list[]=$file; //add files to list
echo 'F: ' . $file.'<br/>';
}
}
return $list;
}
print_r(rfl('code/'));
возвращается
searching for: code/[^~]*
searching for: code/~private/[^~]*
D: code/~private
Array ()
Вот фиксированная функция, используя ответ Клейтона:
function rfl($dir) {
$search = preg_grep('!^'.$dir.'[^~]!', glob($dir.'*')); //find every file and directory not starting with ~. directories are returned with/afterwards
$list=array();
foreach ($search as $file) {
if (is_dir($file)) {
$list=array_merge($list,rfl($file.'/')); //recursively search for valid files in directories
} else {
$list[]=$file; //add files to list
}
}
return $list;
}
да Я знаю, как принимать ответы. Спасибо за помощь. Я отредактировал свой вопрос, чтобы показать фиксированную функцию в случае, если кому-то понадобится. –