在php

时间:2019-02-01 20:58:23

标签: php scandir preg-grep

我正在使用scandir列出目录中的所有文件。但是./../tmp文件夹应该例外。

我已经有了排除点和双点的方法:

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

如何向其中添加tmp文件夹? (该文件夹的名称是tmp)

4 个答案:

答案 0 :(得分:1)

尝试:

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

$ cdir = scandir($ dir);

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

比preg_grep容易

答案 1 :(得分:1)

我会选择这种解决方案,因为已经@duskwuff提到,当前的代码不包括所有与启动文件.

$files = array_diff( scandir($dir), array(".", "..", "tmp") );

答案 2 :(得分:0)

由于它是正则表达式,因此您可以尝试看看negative lookahead

$files = preg_grep('/^(?!tmp|\.{1,2})$/', scandir($dir));

答案 3 :(得分:0)

我会做这样的事情,如果你想坚持使用正则表达式

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