php专区

 首页 > php专区 > PHP高级 > 文件上传 > PHP文件搜索程序代码 - php文件操作

PHP文件搜索程序代码 - php文件操作

分享到:
【字体:
导读:
          文件搜索就是利用php遍历目录然后去一个个文件获取文件名进行对比,然后查找到我们指定文件时就停止遍历并显示要搜索的文件名与地址即可.今天要做一个专门用于处理搜索文件的功能...

PHP文件搜索程序代码

文件搜索就是利用php遍历目录然后去一个个文件获取文件名进行对比,然后查找到我们指定文件时就停止遍历并显示要搜索的文件名与地址即可.

今天要做一个专门用于处理搜索文件的功能,而搜索的文件可能是位于某个目录下的,寻找目录下是否存在该目录,PHP函数当中好像没有专门这样的搜索函数.

文件的操作在 php 中是不可缺少的,而文件的使用频率也是非常高的,比如我们常见的目录管理系统,无数据库留言本等,都用到了文件的操作,而这里的文件指的不仅仅是目录的操作,还有指定文件的操作,比如 txt 文件等.

下面是一个专门用于文件搜索的函数方法,file_search 是方法名,后面有三个参数,$directory 是要搜索的文件所在的目录,比如 “admin/”目录下,$search 是搜索的文件了,$recursive 是判断是否搜索成功的,默认就可以了,如果还需要其它操作,可以在后面进行添加相应参数即可.

例1,代码如下:

  1. function file_search($directory$search$recursive = TRUE) 
  2. $res = FALSE; 
  3. $dir_handle = opendir($directory); 
  4. while( FALSE !== ($file = readdir($dir_handle)) ) 
  5. {  
  6. if$file == '.' || $file == '..' ) 
  7. continue
  8. ifis_dir("$directory$file") ) 
  9. if$recursive ) 
  10. $res = file_search("$directory$file"$search); 
  11. if$res !== FALSE ) 
  12. return $res
  13. if$file == $search ) 
  14. return "$directory$file"
  15. return FALSE; 
  16. ?> 

例2,代码如下:

  1. /*文件查找函数 
  2. //开源代码phpfensi.com 
  3. 用法: 
  4. findfile (目录,是否遍历子目录,是否查找文件内容,不查找的目录) ; 
  5. Ketle  
  6. 2005-07-07 
  7. */ 
  8. function findfile ($dir$find_sub_dir=false, $find_content=false, $except_dir=false)  
  9.          
  10.         $d = dir($dir); 
  11.         while (false !== ($entry = $d->read())) { 
  12.                 if($entry == "." || $entry == ".." || in_array ($entry$except_dir)) 
  13.                         continue;  
  14.                 $file = $d->path."/".$entry
  15.                 if ( is_dir ( $file) )  
  16.                 { 
  17.                         if ( $find_sub_dir )  
  18.                         {                                 
  19.                                 findfile ($file$find_sub_dir$find_content$except_dir) ; 
  20.                         } 
  21.                          
  22.                 }else 
  23.                 { 
  24.                         if ( $find_content )  
  25.                         {                                 
  26.                                 if ( strstr(file_get_contents($file),$find_content) )  
  27.                                 { 
  28.                                         echo $file."
    n"
  29.                                 } 
  30.                         }else 
  31.                         { 
  32.                                 echo $file."
    n"
  33.                         } 
  34.                                  
  35.                 }     
  36.         } 
  37.         $d->close(); 
  38.  
  39.          
  40.  
  41. //test: 
  42. findfile ('..',true,'芙蓉jj',array('templates_c','admin','xixi')) ; 
  43. ?> 

例3,使用php glob函数查找文件,遍历文件目录

函数说明:array glob ( string $pattern [, int $flags ] )

功能:寻找与模式匹配的文件路径,返回包含匹配文件(目录)的数组(注:被检查的文件必须是服务器系统的,不能用于远程文件)

参数说明:第一个参数:匹配模式:第二个可选参数:

•GLOB_MARK - 在每个返回的项目中加一个斜线 

•GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序) 

•GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式 

•GLOB_NOESCAPE - 反斜线不转义元字符 

•GLOB_BRACE - 扩充 {a,b,c} 来匹配 'a','b' 或 'c' 

•GLOB_ONLYDIR - 仅返回与模式匹配的目录项

代码如下:

  1. $file = glob('{,.}*', GLOB_BRACE); //匹配所有文件 
  2. $file1 = glob('*.php');  //匹配所有php文件 
  3. print_r($file1); 

例4,代码如下:

  1. print_r(listDir('./')); //遍历当前目录 
  2. //开源代码phpfensi.com 
  3. function listDir($dir){ 
  4.     $dir .= substr($dir, -1) == '/' ? '' : '/'
  5.     $dirInfo = array(); 
  6.     foreach (glob($dir.'*'as $v) { 
  7.         $dirInfo[] = $v;  
  8.         if(is_dir($v)){ 
  9.             $dirInfo = array_merge($dirInfo, listDir($v)); 
  10.         } 
  11.     } 
  12.     return $dirInfo
分享到:
php 目录递归遍历程序 - php文件操作
php 目录递归遍历程序 一个朋友写的一款目录查找程序,可以根据用户输入的目录名称查到到指定目录或文件,同时还支持锁定目录,有需要的朋友可以参考一下,代码如下:     搜索关键字:  搜索目录:  是否限定以上选择的目录:是 否     
php 给文件尾部增加内容 - php文件操作
php 给文件尾部增加内容 如果我们想添加到一个文件,我们需要以追加方式打开它,下面的代码实现了这个功能,代码如下: $text = "test.txt";  if( file_exists( $text ) && is_file( $text ) )  {   $fh = fopen($myFile, 'a');   if( $fh )   ...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……