2015-02-11 76 views
1

我使用此代码,以便从目录中获取列表文件:PHP - 删除'。'并且从目录中的文件获取值“..”

$dir = '/restosnapp_cms/images/'; 
if ($dp = opendir($_SERVER['DOCUMENT_ROOT'] . $dir)) { 
    $files = array(); 
    while (($file = readdir($dp)) !== false) { 
     if (!is_dir($dir . $file)) { 
      $files[] = $file; 
     } 
    } 
    closedir($dp); 
} else { 
    exit('Directory not opened.'); 
} 

我想摆脱的价值观“”和'..'。

Screenshot

是否有可能做到这一点?谢谢。 :)

+2

使用if条件 – frunkad 2015-02-11 20:02:29

+1

当然,您可以在输出之前对其进行过滤。有许多阵列功能可以帮助这种或那种方式。或者你可以在循环中放一个'if',只输出不是'.'或'..'的名字。 – GolezTrol 2015-02-11 20:03:43

+2

难道这不容易吗? '$ files = array_filter(glob(“$ dir/*”),'is_file');' – AbraCadaver 2015-02-11 20:20:51

回答

6

只是检查他们先:

while ($file = readdir($p)) { 
    if ($file == '.' || $file == '..') { 
     continue; 
    } 
    // rest of your code 
} 
+0

就像一个魅力!谢谢:) – serendipochi 2015-02-11 20:07:26

+1

+1 - 我曾经有过一些情况,我后来想添加更多不应该列出的文件名,在这种情况下,一个'in_array($ file,array('。','..',。 ..))'有时更容易。 – Keelan 2015-02-11 20:07:36

1

DirectoryIterator比更有趣* DIR功能:

$dir = new DirectoryIterator($_SERVER['DOCUMENT_ROOT'] . $dir); 
foreach($dir as $file) { 
    if (!$file->isDir() && !$file->isDot()) { 
     $files[] = $file->getPathname(); 
    } 
} 

但底线是,无论你做哪种方式,你需要使用条件。