Я отвечаю здесь, если кто-то еще выглядит так, как это кажется высоким в Google.
Решение 1 - только glob
Это использует глобус, который предназначен для пропуска. ' и ".." специальные каталоги. Он соответствует любому, что:
$globbed = glob("{*,.[!.]*,..?*}", GLOB_BRACE);
var_dump($globbed);
Решение 2 - globignore
Это функции для имитации поведения globignore в bash .
function globignore(array $ignore, $glob, $glob_flags = 0)
{
$globbed = glob($glob, $glob_flags);
return array_filter($globbed, function ($f) use ($ignore)
{
$base = basename($f);
foreach($ignore as $i)
{
if ($i == $base) return false;
}
return true;
});
}
$globbed = globignore(['.','..'], "{*,.*}", GLOB_BRACE);
var_dump($globbed);
Кажется, что они выполняются почти точно в то же время в моей системе. Решение 1 требует меньше кода, но решение 2 проще включать больше терминов для игнорирования.