在使用这个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?");
} 是否还有我需要过滤的隐藏系统文件的其他名称,或者是这两个名称?
有比我更好的方法来处理这件事吗?
发布于 2014-02-14 19:20:26
您可以替换这个:
(strpos($entry, ".DS_Store") !== false) && (strpos($entry, "._.DS_Store") !== false)通过这一点:
!stristr($entry, '.DS_Store')还有.localized,看到了一些地方。正如@deceze所说,unix系统中充满了.配置文件,这都取决于您正在处理的目录。
或者更好的是,您可以将所有if语句替换为:
if(substr($entry, 0, 1)!='.')发布于 2014-02-14 19:29:11
"点文件“是以点开始的文件,是”隐藏“文件的由来已久的惯例。有很多是由各种各样的程序创造出来的。去终点站和ls -a一起玩。除非你知道你在做什么,否则惯例就是要意识到它们,忽略它们。因此,忽略以.开头的所有文件。
发布于 2014-02-14 19:24:52
可以有大量不同的隐藏文件,例如.svn、.git,以及上面的示例。它检查第一个字符是否为.。
if($entry[0] != '.'){
// do something as its not a hidden file
}https://stackoverflow.com/questions/21787624
复制相似问题