这是我使用PHP的第一个项目,我已经坚持了将近2天了!我想得到我所有的PHP文件从一个目录和任何子目录,并在iframes中显示它们。我已经设法让它显示目录中的所有文件,但我只想要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);
}
}
}
?>
将全局模式从work/*
更改为work/*.php
变化:
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
}
简单…用$path[] = 'work/*.php';
代替$path[] = 'work/*';
您已经在使用glob
,这是最简单的方法。
你应该有更好的代码:)我特别没有添加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 />";
?>