欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php mcDropdown实现文件路径可在下拉框选择的方法

程序员文章站 2022-03-27 08:21:08
...
  1. //获取指定目录下的文件列表
  2. //$path 指定的目录,默认为当前目录
  3. //$ifchild 是否显示子目录文件列表,默认不显示
  4. //$curpath 显示当前的路径,默认为从当前目录开始;这个主要是为了显示确定href路径
  5. function openpath($path=".",$ifchild=false,$curpath=".")
  6. {
  7. $handle = opendir($path);
  8. if($handle)
  9. {
  10. while(false !== ($file = readdir($handle)))
  11. {
  12. if ($file != "." && $file != "..")
  13. {
  14. $fullPath = $path.DIRECTORY_SEPARATOR.$file;
  15. if(is_dir($fullPath))//如果是目录文件
  16. {
  17. if($ifchild)//如果设置了显示子目录
  18. {
  19. //递归
  20. openpath($path.DIRECTORY_SEPARATOR.$file,$ifchild,$curpath.DIRECTORY_SEPARATOR.$file);
  21. }
  22. else
  23. {
  24. echo "
  25. $file
  26. \n";
  27. }
  28. }
  29. else if($file != basename(__FILE__))//排除当前执行脚本
  30. {
  31. echo "
  32. $file
  33. \n";
  34. }
  35. else
  36. {
  37. echo $file;
  38. }
  39. }
  40. }
  41. }
  42. closedir($handle);
  43. }
复制代码

因为要提供路径选择的功能,要是有一个下拉菜单,里面有待选路径的显示就好了。

2、取得当前文件下所有子文件路径的代码:

  1. /*获取指定目录文件路径列表
  2. *$path 指定的目录,默认为当前目录
  3. *$ifchild 是否获取子目录文件列表,默认不获取
  4. *$curpath 显示当前的路径,默认为从当前目录开始
  5. *&$pach_html_srt 传递一个外部变量的引用进来,因为此方法有可能被递归调用,所以以这样的方式来保存
  6. * 一些信息,也可以用全局变量来实现,在函数内部变量改变也影响到外部。
  7. *&$path_ref_count 原理同上,一个计数标志,如果递归,计数器从上一次保存的值开始自增
  8. */
  9. function openpath($path=".",$ifchild=false,&$path_html_str,&$path_ref_count)
  10. {
  11. $handle = opendir($path);
  12. if($handle)
  13. {
  14. while(false !== ($file = readdir($handle)))
  15. {
  16. if ($file != "." && $file != "..")
  17. {
  18. $fullPath = $path.DIRECTORY_SEPARATOR.$file;
  19. if(is_dir($fullPath))//如果文件是目录
  20. {
  21. $path_html_str.='
  22. ';
  23. $path_html_str.=$file.'
      ';
    • if($ifchild)
    • {
    • //递归
    • openpath($path.DIRECTORY_SEPARATOR.$file,$ifchild,&$path_html_str,&$path_ref_count);
    • }
    • $path_html_str.='
  24. ';
  25. }
  26. }
  27. }
  28. }
  29. closedir($handle);
  30. }
复制代码

有了上面的方法,就可以在前台用jquery mcDropdown插件来让用户可以通过下拉菜单选择想进入的目录,所以需要封装成指定格式:

  1. $path_ref_count = 1;
  2. $path_html_str ='';
  3. openpath(".",true,&$path_html_str,&$path_ref_count);
  4. $path_html_str = '
      '.$path_html_str.'
    ';
  5. $path_html_str = str_replace ( "
      ", '', $path_html_str );
    • ?>
    复制代码

    这样把$path_html_str传到前台,显示出来就是一个符合mcDropdown要求的无序列表,就可以显示相应的待选列表了。

    完整代码如下: 1、test.html

    1. jquery mcDropdown实现文件路径可在下拉框选择的方法_bbs.it-home.org
    2. Please select a category:
    3. #categorymenu#
    复制代码

    2、test.php

    1. //目录信息处理
    2. $path_ref_count = 1;
    3. $path_html_str ='';
    4. openpath(".",true,&$path_html_str,&$path_ref_count);
    5. $path_html_str = '
        '.$path_html_str.'
      ';
    6. $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。