2017-08-07 28 views
0

PHPでファイルのパスを取得しようとしていますが、現在停止しています。 getFile.phpスクリプトを実行しているとき、私はtargetFile.txtrelativeパスを取得したい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/ 
... 

:私はこのようなフォルダ構造を持っています。ターゲットファイルは常に、getFile.phpと同じ親フォルダにあるフォルダ内にあります。相対パス以上の場合はプリントアウトしなければならない:私は相対パスを取得しないよう

$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); 
    } 
} 

上記のコードは正常に動作していない。ここで

subfolder 2.2.2/targetFile.txt 

は私がこれまでにしたものですターゲットファイル

助けてください。

+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

Chandra、これは何もエコーしません:/ – g5wx

+0

今すぐコードを更新しました.. –

関連する問題