在下面的脚本中,我试图遍历$ 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?
}
}
答案 0 :(得分: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
。