2015-12-07 73 views
2

我想添加的所有文件在我的項目遞歸,爲了這個,我已經使用這個功能:遞歸需要的所有文件

<?php 

function RequireFiles() 
{ 
    $directory = new RecursiveDirectoryIterator(abspath . "lib/"); 
    $recIterator = new RecursiveIteratorIterator($directory); 

    foreach ($recIterator as $item) 
    { 
     print $item->getPathname() . "<br />"; 
     //include $item->getPathname(); 
    } 
} 

?> 

here有輕微的變化拍攝。

我的問題是,我看起來就像這樣:

E:/項目/ PHP /項目/工程/ lib目錄下。 E:/ projects/php/project/project/lib/class
E:/ projects/php/project/project/lib ..
E:/項目/ PHP /項目/工程/ lib目錄\類..
E:/項目/ PHP /項目/工程/ lib目錄\類\ Log.php
E:/項目/ PHP /項目/工程/ lib中\性狀。
E:/項目/ PHP /項目/工程/ lib目錄\特質..
E:/項目/ PHP /項目/工程/ lib目錄\特徵\ SetLink.php
E:/項目/ PHP /項目/工程/lib\trait\MysqliEsp.php
E:/ projects/php/project/project/lib \ arrays。
E:/項目/ PHP /項目/工程/ lib目錄\陣列..
E:/項目/ PHP /項目/工程/ lib目錄\陣列\ tables.php

我不希望有\.\..最後,並尋找了一段時間的答案,並找不到如何擺脫這些小小的恐懼!

有人可以幫助我解決這個問題,或者指向我的方向問問題答:

回答

2

只要傳遞標誌FilesystemIterator::SKIP_DOTS在構造函數中,例如

$directory = new RecursiveDirectoryIterator(abspath . "lib/" 
              , FilesystemIterator::SKIP_DOTS);
+0

感謝,我給它一個去! –

+0

完美答案,我會盡快告訴你正確的! –

+1

@SamSwift웃不客氣。享受你的一天:) – Rizier123

1

SplFileInfo(那是你從RecursiveIteratorIterator和RecursiveDirectoryIterator獲得)有一個名爲isFile()方法。

您可以再補充if(!$item->isFile()) continue;到您的foreach:

foreach ($recIterator as $item) { 
    if(!$item->isFile()) continue; 
    print $item->getPathname() . "<br />"; 
    //include $item->getPathname(); 
} 
1

嘗試檢查名稱($鍵)並丟棄你不想要的東西:

foreach ($recIterator as $k=>$item) 
{ 
    if ($k == '.' || $k == '..') { continue; } 
    print $item->getPathname() . "<br />"; 
    //include $item->getPathname(); 
}