как исключить определенную папку при использовании scandir в php - PullRequest
0 голосов
/ 01 февраля 2019

Я использую scandir для вывода списка всех файлов в каталоге.Но должно быть исключение для папок ./, ../ и tmp.

У меня уже есть это, чтобы исключить точку и двойную точку:

$files = preg_grep('/^([^.])/', scandir($dir));

Как я могудобавить папку tmp в нее?(имя папки tmp)

Ответы [ 4 ]

0 голосов
/ 02 февраля 2019

Я бы выбрал для этого решения, поскольку из уже упомянутого @duskwuff ваш текущий код исключает все файлы, которые начинаются с .

$files = array_diff( scandir($dir), array(".", "..", "tmp") );
0 голосов
/ 02 февраля 2019

Поскольку это регулярное выражение, вы можете попытаться взглянуть на отрицательный взгляд :

$files = preg_grep('/^(?!tmp|\.{1,2})$/', scandir($dir));
0 голосов
/ 02 февраля 2019

Я бы сделал что-то подобное, если вы хотите придерживаться регулярного выражения

$files = preg_grep('/^(?!tmp|(?!([^.]))).*/', scandir($dir));

0 голосов
/ 02 февраля 2019

Попробуйте:

$ toRemove = array ('.', '..', 'tmp');

$ cdir = scandir ($ dir);

$ result = array_diff ($ cdir, $ toRemove);

Это проще, чем preg_grep

...