php专区

 首页 > php专区 > PHP高级 > 文件上传 > php 目录递归遍历程序 - php文件操作

php 目录递归遍历程序 - php文件操作

分享到:
【字体:
导读:
          一个朋友写的一款目录查找程序,可以根据用户输入的目录名称查到到指定目录或文件,同时还支持锁定目录,有需要的朋友可以参考一下,代码如下:?phpclassFinder{private$key;private$result;private...

php 目录递归遍历程序

一个朋友写的一款目录查找程序,可以根据用户输入的目录名称查到到指定目录或文件,同时还支持锁定目录,有需要的朋友可以参考一下,代码如下:

  1. class Finder{ 
  2.  private $key
  3.  private $result
  4.  private $previewLen = 50; 
  5.  private $file_type = array('html','php','htm','txt'); 
  6.  
  7.  function __construct($key){ 
  8.   $this->key = $key
  9.  } 
  10.  
  11.  function find($folder){ 
  12.   $this->result = array(); 
  13.    
  14.   if(is_array($folder)){ 
  15.    foreach($folder as $f){ 
  16.     $this->_find_in_folder($f); 
  17.    } 
  18.   }else
  19.    $this->_find_in_folder($folder, true); 
  20.   } 
  21.  
  22.   return $this->result; 
  23.  } 
  24.  
  25.  function _find_in_folder($folder,$bSub=false){ 
  26.   foreach(glob($folder.DIRECTORY_SEPARATOR.'*'as $f){ 
  27.    if (is_file($f)){ 
  28.     $extend =explode("." , $f);  
  29.     $type = strtolower(end($extend)); 
  30.     if(in_array($type,$this->file_type)){ 
  31.      $fd = file_get_contents($f); 
  32.      $pos = strpos($fd,$this->key); 
  33.      if($pos!==false){ 
  34.       $end = $pre = '...'
  35.       $pos -= floor($this->previewLen/2); 
  36.       if($pos<0){ 
  37.        $pre = ''
  38.        $pos = 0; 
  39.       } 
  40.  
  41.       $findata = substr($fd,$pos,$this->previewLen); 
  42.       $findata = str_replace($this->key,''.$this->key.'',$findata); 
  43.       $this->result[] = array('path'=>$f,'preview'=>$pre.$findata.$end); 
  44.      } 
  45.     } 
  46.     continue
  47.    } 
  48.  
  49.    if($bSub && is_dir($f)){ 
  50.     $this->_find_in_folder($f,true); 
  51.    } 
  52.   } 
  53.  } 
  54.  
  55.  
  56. $cur_path = dirname(__FILE__); 
  57. if(isset($_GET['a'])){ 
  58.  $key = $_POST['key']; 
  59.  if(!$keydie('关键字不能为空'); 
  60.  
  61.  $cf = new Finder($key); 
  62.  
  63.  $in_folder = array(); 
  64.  $limit_folder = $_POST['limit_folder']; 
  65.  if($limit_folder==1){ 
  66.   if(!isset($_POST['folder']) || !$_POST['folder']) die('限定目录不能为空'); 
  67.   $in_folder = $_POST['folder']; 
  68.   $ret = $cf->find($in_folder); 
  69.  }else
  70.   $ret = $cf->find($cur_path); 
  71.  } 
  72.  
  73.  echo "搜索[$key]结果:"
  74.  if(!$retdie('无'); 
  75.  foreach($ret as $p=>$f){ 
  76.   echo "$p. t$f[path] => $f[preview] n"
  77.  } 
  78.  exit();  
  79.  
  80. $folder = array(); 
  81. function readFolder($path){ 
  82.  global $folder
  83.  $folder[] = $path
  84.  foreach(glob($path.DIRECTORY_SEPARATOR.'*'as $f){ 
  85.   if (is_dir($f)) { 
  86.    readFolder($f); 
  87.   } 
  88.  } 
  89.  
  90. readFolder($cur_path); 
  91. $folder_op = array(); 
  92. foreach($folder as $path){ 
  93.  $folder_op[] = "$path">$path"
  94. }//开源代码phpfensi.com 
  95. $folder_op = implode($folder_op); 
  96. ?> 
  97. "?a=do" method="post"
  98. 搜索关键字:"text" name="key" value=""> 
  99. 搜索目录:"folder[]" multiple="true">echo $folder_op ?> 
  100. 是否限定以上选择的目录:"radio" name="limit_folder" value="1" />是 "radio" name="limit_folder" value="0" checked="true" />否 
  101. "submit" value="搜索" /> 
  102.  
分享到:
php提前判断远程文件是否可用 - php文件...
php提前判断远程文件是否可用 我们利用了php curl相关函数来访问远程文件,然后根据返回状态来判断文件是否可以正常使用,有需要的朋友可以参考一下,代码如下: //判断远程文件   function check_remote_file_exists($url)   {   $curl = curl_init($url);   // 不取回...
PHP文件搜索程序代码 - php文件操作
PHP文件搜索程序代码 文件搜索就是利用php遍历目录然后去一个个文件获取文件名进行对比,然后查找到我们指定文件时就停止遍历并显示要搜索的文件名与地址即可. 今天要做一个专门用于处理搜索文件的功能,而搜索的文件可能是位于某个目录下的,寻找目录下是否存在该目录,PHP函数当中好像没有专门...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……