使用此PHP代码循环浏览图像目录时,我需要过滤掉我的MAC开发计算机坚持创建的系统文件。
首先我只需要过滤掉
.DS_Store
文件,最近出现的文件也是如此:
._.DS_Store
if ($handle = opendir($server_dir)) { //if we could open the directory...
while (false !== ($entry = readdir($handle))) { //then loop through it...
if ( ($entry != ".") && ($entry != "..") && (strpos($entry, ".DS_Store") !== false) && (strpos($entry, "._.DS_Store") !== false) ) { //and skip the . and .. entities
$m .= '
'.$client_dir.$entry.'
';
}
}
closedir($handle);
}
else {
echo("Can't open $dir, does it exist? Does www-user have permission to read it?");
}
我需要过滤掉隐藏系统文件的其他名称还是这两个名称?
有没有比我这样做更好的处理方式?
答案 0 :(得分:1)
你可以替换它:
(strpos($entry, ".DS_Store") !== false) && (strpos($entry, "._.DS_Store") !== false)
由此:
!stristr($entry, '.DS_Store')
并且有.localized,在某些地方看到了。正如@deceze所说,unix系统充满了.
配置文件,这完全取决于你正在处理的目录。
或者甚至更好,您可以通过以下方式替换所有if语句:
if(substr($entry, 0, 1)!='.')
答案 1 :(得分:1)
“Dot files”,以点开头的文件,是“隐藏”文件的UNIX系统的长期惯例。各种各样的程序都创造了大量的程序。转到终端并使用ls -a
进行游戏。惯例是要意识到它们并忽略它们,除非你知道你在做什么。因此,请忽略以.
开头的所有文件。
答案 2 :(得分:0)
可能有大量不同的隐藏文件,例如.svn
,.git
,以及上面的示例尝试此操作...它会检查第一个字符是否为{{1 }}
.