2017-08-07 178 views
0

我試圖在PHP中檢索文件的路徑,但我目前被卡住了。我有一個文件夾結構是這樣的:PHP - 在當前文件夾和子文件夾內搜索文件

- folder 1/ 
- folder 2/ 
    - subfolder 2.1/ 
    - subfolder 2.2/ 
     - subfolder 2.2.1/ 
     - subfolder 2.2.2/ 
      - targetFile.txt 
      - script1.php 
      - script2.php 
      - .htaccess 
     - file1.php 
     - file2.php 
     - file3.php 
     - getFile.php 
     .htaccess 
- Folder 3/ 
- Folder 4/ 
... 

我希望得到的targetFile.txt一個relative路徑運行getFile.php腳本時。目標文件始終位於與getFile.php位於同一父文件夾中的文件夾內。如果相對路徑上面應該打印出來:

subfolder 2.2.2/targetFile.txt 

這裏是我到目前爲止有:

$dir = getcwd(); // Getting the current working dir 
$files = scandir($dir); // Get all files and folders within the working dir 
foreach ($files as $file) { 
    if ($file = 'targetFile.txt') { // Look for a file that matches the targeted file name 
     echo dirname($file); 
    } 
} 

上面的代碼無法正常工作,因爲我沒有得到一個相對路徑目標文件。

任何幫助表示讚賞。

+0

你是什麼意思**不能正常工作**? –

+0

只是爲了確定我理解它是正確的:你能提到你的'getFile.php'所在的目錄嗎? – Twinfriends

+0

@Twinfriends getFile.php總是在同一個父目錄中。問題是targetFile.txt的子目錄正在改變,所以我需要啓動相對於getFile.php的路徑。希望我明白你的問題。 – g5wx

回答

2

使用此代碼:

<?php 
    $dir = getcwd(); // Getting the current working dir 
    $di = new RecursiveDirectoryIterator($dir); 
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('.')); 
    // Get all files and folders within the working dir 

    $files = []; 
    foreach ($iterator as $filename => $file) { 
     $path = pathinfo($filename); 
     if ($path['basename'] == 'targetFile.txt') { 
      echo $path['dirname'] .'<br />'; 
      //echo $path['dirname'], "\n"; 
      //echo $path['basename'], "\n"; 
      //echo $path['extension'], "\n"; 
      //echo $path['filename'], "\n"; // since PHP 5.2.0 
     } 
     $files[] = $filename; 
    } 
    //asort($files); 
    //echo "<pre>"; print_r($files);die; 
?> 

更多信息:

http://php.net/manual/en/function.pathinfo.php

http://php.net/RecursiveDirectoryIterator

+0

雖然你修復了if語句問題,但代碼仍然不起作用。問題:「目標文件始終位於與getFile.php位於同一父文件夾中的文件夾內。」 - scandir將能夠找到腳本所在的文件夾,但不會再爲該文件掃描該文件夾。 – Twinfriends

+0

錢德拉,這回應什麼都沒有:/ – g5wx

+0

更新你的代碼,我已經更新了.. –

相關問題