0

在下面的脚本中,我试图遍历 $base 文件夹中的文件夹和文件。我希望它包含单级子文件夹,每个子文件夹都包含许多 .txt 文件(并且没有子文件夹)。

我只需要了解如何在下面的评论中引用元素...

非常感谢任何帮助。我真的很接近结束这个:-)

$base = dirname(__FILE__).'/widgets/';
$rdi = new RecursiveDirectoryIterator($base);
foreach(new RecursiveIteratorIterator($rdi) as $files_widgets) 
    {
     if ($files_widgets->isFile()) 
         {
            $file_name_widget = $files_widgets->getFilename(); //what is the filename of the current el?
            $widget_text = file_get_contents(???); //How do I reference the file here to obtain its contents?
            $sidebar_id = $files_widgets->getBasename(); //what is the file's parent directory name?
        }
    }
4

1 回答 1

2
//How do I reference the file here to obtain its contents?
    $widget_text = file_get_contents(???); 

$files_widgets是一个SplFileInfo,所以你有几个选项来获取文件的内容。

最简单的方法是使用file_get_contents,就像你现在一样。您可以将路径和文件名连接在一起:

$filename = $files_widgets->getPathname() . '/' . $files_widgets->getFilename();
$widget_text = file_get_contents($filename);

如果你想做一些有趣的事情,你也可以使用openFile来获取一个SplFileObject。烦人的是,SplFileObject 没有快速获取所有文件内容的方法,所以我们必须构建一个循环:

$fo = $files_widgets->openFile('r');
$widget_text = '';
foreach($fo as $line)
    $widget_text .= $line;
unset($fo);

这有点冗长,因为我们必须遍历 SplFileObject 才能逐行获取内容。虽然这是一个选项,但您只需使用file_get_contents.

于 2011-03-22T17:25:20.680 回答