我有以下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>";
}
}
?>
谢谢!
答案 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>";
}
}
?>
我不知道RecursiveDirectoryIterator
和RecursiveIteratorIterator
是什么,他们的语法看起来很奇怪。