利用php+mcDropdown實現檔案路徑可在下拉框選擇_PHP

來源:互聯網
上載者:User
關鍵字 php 檔案路徑 下拉框
最近用php進行檔案目錄資訊讀取,在網上弄到下面一段代碼:
//擷取指定目錄下的檔案清單
//$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 "
  • $file
  • \n";
    }
    }
    else if($file != basename(__FILE__))//排除當前執行指令碼
    {
    echo "
  • $file
  • \n";
    }
    else
    {
    echo $file;
    }
    }
    }
    }
    closedir($handle);
    }

    因為自己要提供直接選取的功能,最好是有一個下拉式功能表,裡面有待選路徑的顯示,這樣方便很多,於是自己改了改,把路徑輸出成一個無序列表。
    下面是一個取得當前檔案下所有子檔案路徑的代碼:
    複製代碼 代碼如下:
    /*擷取指定目錄檔案路徑列表
    *$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 !== ($file = readdir($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.'
    ';
    $path_html_str = str_replace ( "
      ", '', $path_html_str );

      這樣我把$path_html_str傳到前台,顯示出來的就是一個符合mcDropdown要求的無序列表,就可以顯示相應的待選列表了。
      完整代碼如下:
      test.html
      複製代碼 代碼如下:




      test










      Please select a category:



      #categorymenu#



      test.php
      複製代碼 代碼如下:
      //目錄資訊處理
      $path_ref_count = 1;
      $path_html_str ='';
      openpath(".",true,&$path_html_str,&$path_ref_count);
      $path_html_str = '
        '.$path_html_str.'
      ';
      $path_html_str = str_replace ( "
        ", '', $path_html_str );
        //var_dump($path_info);
        //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 );
        $str_buffer = str_replace ( "#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 !== ($file = readdir($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 外掛程式可以在這裡下載:http://www.givainc.com/labs/mcdropdown_jquery_plugin.htm
      • 相關文章

        聯繫我們

        該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

        如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

        A Free Trial That Lets You Build Big!

        Start building with 50+ products and up to 12 months usage for Elastic Compute Service

        • Sales Support

          1 on 1 presale consultation

        • After-Sales Support

          24/7 Technical Support 6 Free Tickets per Quarter Faster Response

        • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.