2011-10-19 13 views
1

これはPHPを使用した私の最初のプロジェクトで、私はこれでほぼ2日間これに固執しました! ディレクトリとサブディレクトリからすべてのPHPファイルを取得し、iframeに表示したいと考えています。 私はディレクトリ内のすべてのファイルを表示するようにしましたが、PHPファイルのみが必要です。下記を参照してください。助けやアドバイスを事前に感謝します。PHP - ディレクトリとサブディレクトリからPHPファイルだけを表示

<?php 
$path[] = 'work/*'; 

while(count($path) != 0) 
{ 

$v = array_shift($path); 
foreach(glob($v) as $item) 
{ 
    if (is_dir($item)) 
     $path[] = $item . '/*'; 
    elseif (is_file($item)) 
    { 
     printf(
    "<iframe width=420 height=150 frameborder=0 src='$item'></iframe>", 
    ($file),$target); 

    } 
} 
} 
?> 

答えて

0

変更:

elseif (is_file($item) && substr($item, -4) == '.php') 

elseif (is_file($item)) 

また、PHPのディレクトリイテレータを使用することができますが、上記のは、あなたが実際にそれが働いて得るために行うために必要なすべてのです。

えが、楽しみのために、ここではイテレータのアプローチです:あなたはより良いコードを持っている必要があり

$dir = new RecursiveDirectoryIterator('work'); 
$iter = new RecursiveIteratorIterator($dir); 
$regex = new RegexIterator($iter, '/^.+\.php$/'); 

foreach($regex as $filename) 
{ 
    // do something with $filename 
} 
+0

すばらしかったです - ありがとうございました! - 私はここに早く投稿したいと思っています!魅力を発揮します:) – dave

3

グロブパターンをwork/*からwork/*.phpに変更します。シンプル

+0

その後、彼は再帰的なディレクトリを失います。 – Matthew

+0

@Matthewは2つのグロブを実行します.1つは 'GLOB_ONLYDIR'フラグで、もう1つは' * .php'で各ディレクトリ内に実行します。 –

0

...あなたは既にglobを使用している$path[] = 'work/*.php';

$path[] = 'work/*';を置き換えるには、これが最も簡単な方法です。

0

:) をあなたは少しより多くの経験を得るために自分でそれを編集することができますので、私は特別にインラインフレームを追加しませんでした:)

<?php 
$iterator = new RecursiveDirectoryIterator('work/'); 

$files_count = 0; 

foreach(new RecursiveIteratorIterator($iterator) as $filename => $cur) { 
    $file_info = pathinfo($filename); 

    if($file_info['extension'] === 'php') { 
     $files_count++; 
     echo $filename . "<br />"; 
    } 
} 

echo "Total: $files_count files<br />"; 
?> 
+0

ありがとうございます - これもうまくいくようになっています。私はちょうど長いリストではなく、領域を埋めるためにiframeを取得する必要があります。可能な場合iframeはdiv内の高さ(つまり2列)の前に幅を設定します。 – dave

+0

それはhtml質問:)あなたは出力を変更し、そこに必要なhtmlを追加することができます – user973254

+0

ちょうど今確かめたいと思っていた思考は、ちょうど今、 – dave

関連する問題