Как использовать функцию glob в PHP для захвата каталогов без вывода пути?

Я заметил кое-что интересное о функции glob в PHP.

Когда я делаю

$directories = glob('*', GLOB_ONLYDIR);
echo json_encode($directories);

функция вернет кучу имен папок в массиве json, отлично!

Но, когда я делаю

$directories = glob('./img/works/*', GLOB_ONLYDIR);
echo json_encode($directories);

функция вернет кучу имен папок с путем, указанным ниже:

[".\/img\/works\/123",
".\/img\/works\/234",
".\/img\/works\/345",
".\/img\/works\/456"]

Это нормально? Если это так, как я могу заставить функцию glob выводить только имена папок?

Соответствующим вопросом будет: есть ли способ использовать флаги GLOB_NOESCAPE GLOB_ONLYDIR одновременно при вызове функции glob?

1

Решение

Да, поведение так и должно быть! Если хотите, вы можете сделать что-то подобное, чтобы получить только имя dir:

$directories = array_map("basename", glob('./test/*', GLOB_ONLYDIR));
echo json_encode($directories);

РЕДАКТИРОВАТЬ:

Да, вы можете использовать несколько флагов с glob, это так просто:

$directories = array_map("basename", glob('./test/*', GLOB_ONLYDIR | GLOB_NOESCAPE));
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]