PHP - 仅显示目录和子目录中的PHP文件

时间:2011-10-19 16:59:13

标签: php

这是我使用PHP的第一个项目,我已经坚持了近2天了! 我想从目录和任何子目录中获取所有PHP文件,并在iframe中显示它们。 我设法让它显示目录中的所有文件,但我只想要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);

    }
}
}
?>

4 个答案:

答案 0 :(得分:3)

将您的水珠模式从work/*更改为work/*.php

答案 1 :(得分:0)

简单...将$path[] = 'work/*';替换为$path[] = 'work/*.php';

您已经在使用glob,这是最简单的方法。

答案 2 :(得分: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
}

答案 3 :(得分: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 />";
?>