[英]PHP recursive directory listing - directories ONLY
我正在研究一個文件管理器項目,似乎無法理解我只獲取目錄的遞歸目錄列表。 我嘗試過的所有內容都會留下空的子目錄,或者在我嘗試將其解析為jQuery樹的返回結構時無效。
我已經嘗試過使用數組和遞歸迭代器,但到目前為止我沒有任何工作。
**更新**
感謝大家的意見,我已將我的代碼縮減為:
class image_management {
private $_user_id;
private $_user_name;
private $_user_path;
/**
* Constructor
*/
function __construct($user_id, $user_name) {
$this->_user_id = $user_id;
$this->_user_name = $user_name;
$this->_user_path = ORDER_ROOT.$this->_user_id;
}
/**
* Cleanup the class and close connections
*
*/
function __destruct() {
}
/**
* Get Image Folders
* Returns an HTML list of the folders under a users
* directory.
*
* @param hash $user_id -user id hash
* @param string $user_name - users email address
* @return string - html list
*/
public function getHTMLTree() {
$html = "<li><a href='#'>";
$html .= $this->_user_name . "</a><ul>";
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->_user_path), RecursiveIteratorIterator::SELF_FIRST);
foreach($objects as $file) {
if($file->isDir() ) {
$item = substr($file->getPathname(),strlen($this->_user_path));
echo $item;
}
}
return $html;
}
}
這給了我輸出:
/home/printshi/public_html/test/orders/88a0a01afd3728af8f6710ed874267f3
/Aggie_Stuff
/Misc
/Misc/Christmas
/Misc/Christmas/santa
/Misc/Christmas/frosty
/Misc/test1
/Geek_Stuff
這讓我更接近,我現在的問題是,我需要做的是將所有這些元素包裝在HTML中,以便得到如下輸出:
<ul>
<li>Aggie_Stuff</li>
<li>Misc<ul>
<li>Christmas<ul>
<li>santa</li>
<li>frosty</li>
</ul>
</li>
<li>test1</li>
</ul>
<li>Geek_Stuff</li>
我理解的遞歸部分,它只是讓它做HTML,無論我怎么努力,我似乎無法理解。
看看DirectoryIterator類,尤其是isDir函數。
$iterator = new DirectoryIterator(dirname(__FILE__));
foreach ($iterator as $fileinfo) {
if ($fileinfo->isDir() && !$fileinfo->isDot()) {
echo $fileinfo->getFilename() . "\n";
// recursion goes here.
}
}
RecursiveIteratorIterator
和RecursiveDirectoryIterator
可以為您執行此操作:
$iter = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path));
foreach($iter as $file) {
if ($file->getFilename() == '.') {
echo $file->getPath() . PHP_EOL;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.