2011-10-19 25 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)) 

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

您也可以使用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

@Mthethew运行2个glob,其中一个带有GLOB_ONLYDIR标志,另一个带有每个目录内的* .php。 –

0

简单......与$path[] = 'work/*.php';

您已经在使用glob更换$path[] = 'work/*';,这是最简单的方法。

0

你应该有更好的代码:) 我特意没有添加iframe中,所以你可以自己编辑,以获得更多的经验:)

<?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填充一个区域,而不是一长串。所以尽可能iframes会在div的高度之前填充宽度(即2列)。 – dave

+0

它的HTML问题:)你可以改变输出并添加你需要的HTML – user973254

+0

认为这种情况只是想确保,现在只是摆弄它,再次感谢! – dave