LINUX.ORG.RU

PHP: Функция glob с флагом GLOB_BRACE не возвращает часть файлов

 , ,


0

1

Есть каталог:

$ # w/o dotfiles:
$ find /path/to/dir | grep -v '/\.' | wc -l
  146016

Результат рекурсивного перебора файлов с помощью функции glob и шаблона без {} зависит от флага GLOB_BRACE:

$ cat rglob
#!/usr/bin/env php
<?php
function foo($path, &$nfile) {
    $files = glob($path.'/*');
    foreach ($files as $file) {
        $nfile++;
        if (is_dir($file))
            foo($file, $nfile);
    }
}

$nfile = 0;
foo('/path/to/dir', $nfile);
echo("$nfile\n");
?>
$ diff rglob rglob_brace
4c4
<     $files = glob($path.'/*');
---
>     $files = glob($path.'/*', GLOB_BRACE);
$ ./rglob
146015
$ ./rglob_brace
143433

Так должно быть? Почему?

// Флаг GLOB_BRACE мне понадобится с другим шаблоном, чтобы перебрать и dotfiles...

★★

Последнее исправление: Evenik (всего исправлений: 5)

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.