在有人標記此重複內容之前,請理解我搜索了此網站,Google搜索和PHP.net。用PHP遞歸列出所有帶日期的文件
我想要的是超級簡單。我想要一個帶有日期戳(最後修改)的網站上的所有文件的列表。我發現了幾個聲稱可以這樣做的腳本,但是他們都沒有工作。
到目前爲止,我已經找到了最好的一個是這樣的一個:
header("Pragma: public");
header("Cache-Control: private");
header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=age-of-files.csv");
$result = array();
$handle = opendir(".");
while ($datei = readdir($handle))
{
if (($datei != '.') && ($datei != '..'))
{
$file = "./".$datei;
if (!is_dir($file))
$result[] = $file;
}
}
closedir($handle);
foreach($result as $r)
if (file_exists($r))
echo substr($r,2).",".date ("m-d-Y", filemtime($r))."\r\n";
這對於腳本運行在dircetory的偉大工程,但它不是遞歸的。我需要它繼續爲每個子目錄。我的目標是擁有一個可排序的列表,以便我可以找到在特定日期或周圍修改過的文件。
我是PHP新手,請耐心等待。我在PHP.net做了一些研究(我一直在看人們提到SPL,我不確定它代表什麼或它是什麼,但也許它是一組標準的PHP類),看起來我需要以某種方式使用RecursiveDirectoryIterator。
我發現這個腳本在紙上看起來不錯,但在我的網站上運行它會產生空白的白色屏幕。
try
{
/*** freds home directory ***/
$rdi = new recursiveDirectoryIterator('/', FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS);
$it = new recursiveIteratorIterator($rdi);
while($it->valid())
{
if(!$it->isDir())
{
echo $it->current().' '.date('Y m d H:i:s', $it->getATime())."\n";
}
/*** move to the next element ***/
$it->next();
}
}
catch(Exception $e)
{
/*** echo the error message ***/
echo $e->getMessage();
}
我寧願因爲我喜歡它創建一個CSV文件(容易排序),但我不知道如何協調二者使用的第一個腳本。有人能告訴我如何將RDI合併到第一個腳本中嗎?
嘗試不使用這些',FilesystemIterator :: SKIP_DOTS | FilesystemIterator :: UNIX_PATHS' – Sayed