-
-
//取得指定目錄下的檔案清單
- //$path 指定的目錄,預設為目前目錄
- // $ifchild 是否顯示子目錄檔案列表,預設不顯示
- //$curpath 顯示目前的路徑,預設為從目前目錄開始;這個主要是為了顯示確定href路徑
- function openpath($path=". ",$ifchild=false,$curpath=".")
- {
- $handle = opendir($path);
- if($handle)
- {
- while(false != = ($file = readdir($handle)))
- {
- if ($file != "." && $file != "..")
- {
- $fullPath = $path .DIRECTORY_SEPARATOR.$file;
- if(is_dir($fullPath))//如果是目錄檔案
- {
- if($ifchild)//如果設定了顯示子目錄
- {
- //遞歸
- openpath($path.DIRECTORY_SEPARATOR.$file,$ifchild,$curpath.DIRECTORY_SEPARATOR.$file);
- }
- else
- {
- echo "
- href="$curpath/$file " target="_blank">$file
n"; - }
- }
- else if($file != basename(__FILE__) )//排除目前執行腳本
- {
- echo "
- $file
n"; - }
- else
- {
- echo $file;
- }
- }
- }
- }
- closedir($handle);
- }
- }
複製程式碼
因為要提供路徑選擇的功能,如果有一個下拉式選單,裡面有待選路徑的顯示就好了。
2、取得目前檔案下所有子檔案路徑的程式碼:
-
-
/*取得指定目錄檔案路徑清單
- *$path 指定的目錄,預設為目前目錄
- * $ifchild 是否取得子目錄檔案列表,預設不取得
- *$curpath 顯示目前的路徑,預設為從目前目錄開始
- *&$pach_html_srt 傳遞一個外部變數的參考進來,因為此方法有可能被遞歸調用,所以以這樣的方式來保存
- * 一些信息,也可以用全局變量來實現,在函數內部變量改變也影響到外部。
- *&$path_ref_count 原理同上,一個計數標誌,如果遞歸,計數器從上一次保存的值開始自增
- */
- function openpath($path=".",$ifchild=false, &$path_html_str,&$path_ref_count)
- {
- $handle = opendir($path);
- if($handle)
- {
- while(false !== ($handle)
- {
- while(false !== ($handle)
- {
- while(false !== ($handle)
- {
- while(false !== ($handle)
- {
- while(false !== ($) = readdirfile = readdirfile ($handle)))
- {
- if ($file != "." && $file != "..")
- {
- $fullPath = $path.DIRECTORY_SEPARATOR.$file;
- if(is_dir($fullPath))//如果檔案是目錄
- {
- $path_html_str.='
- ';
- $path_html_str. =$file.'
'; - if($ifchild)
- {
- //遞迴
- openpath($path.DIRECTORY_SEPARATOR.$file,$ifchild,&$path_html_str,&$ path_ref_count);
} $path_html_str.=''; } } } } closedir($handle); }
- 複製程式碼
-
-
- 有了上面的方法,就可以在前台用jquery mcDropdown插件來讓使用者可以透過下拉式選單選擇想進入的目錄,所以需要封裝成指定格式:
-
-
-
-
$path_ref_count = 1; $path_html_str =''; openpath(".",true,& $path_html_str,&$path_ref_count); $path_html_str = ''; $path_html_str = str_html_str.''; $path_html_str = str_replace ( "", '', $path_html_str ); ?>複製程式碼這樣把$path_html_str傳到前台,顯示出來就是一個符合mcDropdown要求的無序列表,就可以顯示對應的待選清單了。
完整程式碼如下:
1、test.html
2、test.php
-
-
//目錄資訊處理
- $path_ref_count = 1;
- $path_html_str ='';
- open
- open (".",true,&$path_html_str,&$path_ref_count);
- $path_html_str = '';
- $path_html_str = str_replace ( "", '', $path_html_str );
- //var_dump($path_info);
- //var_dump($path_html_str);
-
- //var_dump($path_html_str);
-
- //var_dump($path_html_str);
-
- //var_dump($path_html_str);
-
- //var_dump($path_html_str);
-
- $str_buffer = file_get_contents (dirname(__FILE__).DIRECTORY_SEPARATOR.'test.html');
- $str_buffer = str_replace ( "#categorymenu#", $path_html_str, $str_buffer ); #delim#", DIRECTORY_SEPARATOR, $str_buffer );
- echo $str_buffer;
-
-
- /*取得指定目錄檔案路徑清單
- *$path 指定的目錄,預設為目前目錄
- *$ifchild 是否取得子目錄檔案列表,預設不取得
- *$curpath 顯示目前的路徑,預設為從目前目錄開始
- *&$pach_html_srt 傳遞一個外部變數的參考進來,因為此方法有可能被遞歸調用,所以以這樣的方式來保存
- * 一些信息,也可以用全局變量來實現,在函數內部變量改變也影響到外部。
- *&$path_ref_count 原理同上,一個計數標誌,如果遞歸,計數器從上一次保存的值開始自增
- */
- function openpath($path=".",$ifchild=false, &$path_html_str,&$path_ref_count)
- {
- $handle = opendir($path);
- if($handle)
- {
- while(false !== ($handle)
- {
- while(false !== ($handle)
- {
- while(false !== ($handle)
- {
- while(false !== ($handle)
- {
- while(false !== ($) = readdirfile = readdirfile ($handle)))
- {
- if ($file != "." && $file != "..")
- {
- $fullPath = $path.DIRECTORY_SEPARATOR.$file;
- if(is_dir($fullPath))//如果檔案是目錄
- {
$path_html_str.=' ';
$path_html_str. =$file.'
//遞迴 openpath($path.DIRECTORY_SEPARATOR.$file,$ifchild,&$path_html_str,&$ path_ref_count); } | $path_html_str.='';
}