包括目录中除'index.php'之外的所有PHP文件

时间:2011-10-21 10:39:52

标签: php

我有以下PHP代码扫描目录和子文件夹,并列出iframe中的所有PHP文件。 我想要包含目录中的所有PHP文件,除了一个'index.php'的实例。

我尝试添加:

 if ($file != "." && $file != ".." && $file != 'index.php')

但它不起作用。 这是完整的代码:

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

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

if($file_info['extension'] === 'php') {
    if ($file != "." && $file != ".." && $file != 'index.php')

    echo 
  "<iframe width=420 height=150 frameborder=1 src='$filename'></iframe>";
}
}

?>

谢谢!

3 个答案:

答案 0 :(得分:2)

当你以迭代方式执行它时,你也可以使用过滤迭代器。 RegexIterator特别有用,如果你的情况检查,可以避免一些。

 $iterator = new RecursiveDirectoryIterator('work/');
 $iterator = new RecursiveIteratorIterator($iterator) 
 $iterator = new RegexIterator($iterator, "~(?<![/\\\\]index)\.php$~");
 foreach ($iterator as $filename=>$cur) {
     print "$filename<br>";
 }

我认为对...进行测试是多余的。

答案 1 :(得分:0)

您没有指定$file。它总是null

答案 2 :(得分:-1)

只需将$filename替换为$file,这应该有效:

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

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

if($file_info['extension'] === 'php') {
    if ($file != "." && $file != ".." && $file != 'index.php')

    echo 
  "<iframe width=420 height=150 frameborder=1 src='$file'></iframe>";
}
}

?>

我不知道RecursiveDirectoryIteratorRecursiveIteratorIterator是什么,他们的语法看起来很奇怪。