[英]how to exclude a certain folder when using scandir in php
我正在使用 scandir 列出目录中的所有文件。 但是./
、 ../
和tmp
文件夹应该有一个例外。
我已经有了这个来排除点和双点:
$files = preg_grep('/^([^.])/', scandir($dir));
如何将tmp
文件夹添加到其中? (文件夹名称为 tmp)
尝试 :
$toRemove = array('.','..','tmp');
$cdir = scandir($dir);
$result = array_diff($cdir, $toRemove);
它比preg_grep
更容易
我会选择这个解决方案,因为@duskwuff 已经提到过,您当前的代码排除了所有以.
$files = array_diff( scandir($dir), array(".", "..", "tmp") );
由于它是一个正则表达式,您可以尝试查看负面预测:
$files = preg_grep('/^(?!tmp|\.{1,2})$/', scandir($dir));
如果你想坚持使用正则表达式,我会做类似的事情
$files = preg_grep('/^(?!tmp|(?!([^.]))).*/', scandir($dir));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.