我有这个日志的目录结构
logs
-2012
--01
---01.php
---02.php
--02
---20.php
---23.php
我希望能够使用PHP的RecursiveTreeIterator来显示具有实际php文件(而不是dirs)的树作为显示文件内容的链接。
使用此问题的第一个答案作为指南:Sorting files per directory using SPL's DirectoryTreeIterator
我是大多数PHP 5的SPL的新手,所以我需要一些帮助。我如何建树?谢谢!
答案 0 :(得分:4)
作为我在评论中提供的链接的替代方案:
您还可以扩展TreeIterator的current()
方法以提供额外的标记:
class LinkedRecursiveTreeIterator extends RecursiveTreeIterator
{
public function current()
{
return str_replace(
$this->getInnerIterator()->current(),
sprintf(
'<a href="%1$s">%1$s</a>',
$this->getInnerIterator()->current()
),
parent::current()
);
}
}
$treeIterator = new LinkedRecursiveTreeIterator(
new RecursiveDirectoryIterator('/path/to/dir'),
LinkedRecursiveTreeIterator::LEAVES_ONLY);
foreach($treeIterator as $val) echo $val, PHP_EOL;
以上将打印TreeIterator
打印的常规ASCII树,但会将文件名包装成超链接。请注意$this->getInnerIterator()->current()
返回File对象,因此您也可以访问任何其他文件属性,例如filesize,last modified等。