好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

php 目录递归遍历程序

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

<?php  class  Finder{    private   $key ;    private   $result ;    private   $previewLen  = 50;    private   $file_type  =  array ( 'html' , 'php' , 'htm' , 'txt' );      function  __construct( $key ){     $this ->key =  $key ;   }      function  find( $folder ){     $this ->result =  array ();         if ( is_array ( $folder )){      foreach ( $folder   as   $f ){       $this ->_find_in_folder( $f );     }    } else {      $this ->_find_in_folder( $folder , true);    }       return   $this ->result;   }      function  _find_in_folder( $folder , $bSub =false){     foreach ( glob ( $folder .DIRECTORY_SEPARATOR. '*' )  as   $f ){      if  ( is_file ( $f )){       $extend  = explode ( "."  ,  $f );        $type  =  strtolower ( end ( $extend ));       if (in_array( $type , $this ->file_type)){        $fd  =  file_get_contents ( $f );        $pos  =  strpos ( $fd , $this ->key);        if ( $pos !==false){         $end  =  $pre  =  '...' ;         $pos  -=  floor ( $this ->previewLen/2);         if ( $pos <0){          $pre  =  '' ;          $pos  = 0;        }           $findata  =  substr ( $fd , $pos , $this ->previewLen);         $findata  =  str_replace ( $this ->key, '<span style="color:red">' . $this ->key. '</span>' , $findata );         $this ->result[] =  array ( 'path' => $f , 'preview' => $pre . $findata . $end );       }      }       continue ;     }        if ( $bSub  &&  is_dir ( $f )){       $this ->_find_in_folder( $f ,true);     }    }   }    }    $cur_path  = dirname( __FILE__ );  if (isset( $_GET [ 'a' ])){    $key  =  $_POST [ 'key' ];    if (! $key )  die ( '关键字不能为空' );      $cf  =  new  Finder( $key );      $in_folder  =  array ();    $limit_folder  =  $_POST [ 'limit_folder' ];    if ( $limit_folder ==1){     if (!isset( $_POST [ 'folder' ]) || ! $_POST [ 'folder' ])  die ( '限定目录不能为空' );     $in_folder  =  $_POST [ 'folder' ];     $ret  =  $cf ->find( $in_folder );   } else {     $ret  =  $cf ->find( $cur_path );   }      echo   "搜索[$key]结果:<br />" ;    if (! $ret )  die ( '无' );    foreach ( $ret   as   $p => $f ){     echo   "$p. t$f[path] => $f[preview] <br />n" ;   }    exit ();   }    $folder  =  array ();  function  readFolder( $path ){    global   $folder ;    $folder [] =  $path ;    foreach ( glob ( $path .DIRECTORY_SEPARATOR. '*' )  as   $f ){     if  ( is_dir ( $f )) {     readFolder( $f );    }   }  }    readFolder( $cur_path );  $folder_op  =  array ();  foreach ( $folder   as   $path ){    $folder_op [] =  "<option value=" $path ">$path</option>" ;  } //开源代码phpfensi.com   $folder_op  = implode( $folder_op );  ?>  <form action= "?a=do"  method= "post" >  搜索关键字:<input type= "text"  name= "key"  value= "" ><br />  搜索目录:<select name= "folder[]"  multiple= "true" ><?php  echo   $folder_op  ?></select><br />  是否限定以上选择的目录:<input type= "radio"  name= "limit_folder"  value= "1"  />是 <input type= "radio"  name= "limit_folder"  value= "0"  checked= "true"  />否  <input type= "submit"  value= "搜索"  />  </form> 

查看更多关于php 目录递归遍历程序 - php文件操作的详细内容...

  阅读:65次