PHP - возможно ли перечислить только каталоги и использовать фигурные скобки одновременно с glob?

Я хотел бы (в идеале) использовать GLOB_ONLYDIR и GLOB_BRACE одновременно, потому что я хотел бы выполнить некоторое сопоставление с образцом, как я могу сделать с файлами аля *.{txt,php,doc,...,<whatever>}, но с каталогами.

Однако все мои попытки на данный момент оказались совершенно тщетными (даже рискнул попробовать GLOB_BRACE | GLOB_ONLYDIR, вспомнив старые добрые времена fopen и C с флагами O_, но, конечно, безуспешно), включая такие вещи, как glob(glob($path, GLOB_BRACE), GLOB_ONLYDIR); и другие подобные неудачные попытки.

Мое намерение состоит в том, чтобы подсчитать количество каталогов по заданному пути, но я хотел бы (необязательно) передать соответствующий шаблон для подсчета конкретных вхождений.

Как я могу сделать это с глобусом? (или... есть ли лучший подход/альтернатива тому, что я пытаюсь сделать?)


person Julio María Meca Hansen    schedule 10.12.2012    source источник
comment
Что касается альтернатив: если вы используете PHP 5.3+ и не возражаете против многословия, вы можете использовать RecursiveDirectoryIterator с RecursiveFilterIterator для фильтрации результатов с использованием кода вместо подстановки. В комментариях RecursiveFilterIterator есть пример использования.   -  person Charles    schedule 10.12.2012
comment
вы уверены, что GLOB_BRACE | GLOB_ONLYDIR вам не подходит? Потому что я считаю, что вы можете использовать этот синтаксис для указания нескольких флагов.   -  person anson    schedule 10.12.2012
comment
@ Чарльз, я попробую завтра. Спасибо за подсказку!   -  person Julio María Meca Hansen    schedule 10.12.2012
comment
@andbeyond это не сработало: P   -  person Julio María Meca Hansen    schedule 10.12.2012


Ответы (1)


Вы можете попробовать захватить все каталоги и пересечь их со всеми совпадениями скобок, например.

array_intersect(glob($plain_path, GLOB_ONLYDIR), glob($brace_path, GLOB_BRACE))

Вам просто нужно реализовать какой-то способ узнать, что такое $plain_path, если вам дана только строка совпадения фигурных скобок (если только ваша ситуация не является достаточно статической, чтобы она когда-либо была только одним путем).

person Ben Carlsson    schedule 10.12.2012