PHP文件搜索程序代码
发布:smiling 来源: PHP粉丝网 添加日期:2014-08-27 14:35:04 浏览: 评论:0
文件搜索就是利用php遍历目录然后去一个个文件获取文件名进行对比,然后查找到我们指定文件时就停止遍历并显示要搜索的文件名与地址即可.
今天要做一个专门用于处理搜索文件的功能,而搜索的文件可能是位于某个目录下的,寻找目录下是否存在该目录,PHP函数当中好像没有专门这样的搜索函数.
文件的操作在 php 中是不可缺少的,而文件的使用频率也是非常高的,比如我们常见的目录管理系统,无数据库留言本等,都用到了文件的操作,而这里的文件指的不仅仅是目录的操作,还有指定文件的操作,比如 txt 文件等.
下面是一个专门用于文件搜索的函数方法,file_search 是方法名,后面有三个参数,$directory 是要搜索的文件所在的目录,比如 “admin/”目录下,$search 是搜索的文件了,$recursive 是判断是否搜索成功的,默认就可以了,如果还需要其它操作,可以在后面进行添加相应参数即可.
例1,代码如下:
- <?php
- function file_search($directory, $search, $recursive = TRUE)
- {
- $res = FALSE;
- $dir_handle = opendir($directory);
- while( FALSE !== ($file = readdir($dir_handle)) )
- {
- if( $file == '.' || $file == '..' )
- {
- continue;
- }
- if( is_dir("$directory\$file") )
- {
- if( $recursive )
- {
- $res = file_search("$directory\$file", $search);
- if( $res !== FALSE )
- {
- return $res;
- }
- }
- }
- if( $file == $search )
- {
- return "$directory\$file";
- }
- }
- return FALSE;
- }
- ?>
例2,代码如下:
- <?php
- /*文件查找函数
- //开源代码phpfensi.com
- 用法:
- findfile (目录,是否遍历子目录,是否查找文件内容,不查找的目录) ;
- Ketle
- 2005-07-07
- */
- function findfile ($dir, $find_sub_dir=false, $find_content=false, $except_dir=false)
- {
- $d = dir($dir);
- while (false !== ($entry = $d->read())) {
- if($entry == "." || $entry == ".." || in_array ($entry, $except_dir))
- continue;
- $file = $d->path."/".$entry;
- if ( is_dir ( $file) )
- {
- if ( $find_sub_dir )
- {
- findfile ($file, $find_sub_dir, $find_content, $except_dir) ;
- }
- }else
- {
- if ( $find_content )
- {
- if ( strstr(file_get_contents($file),$find_content) )
- {
- echo $file."<br>n";
- }
- }else
- {
- echo $file."<br>n";
- }
- }
- }
- $d->close();
- }
- //test:
- findfile ('..',true,'芙蓉jj',array('templates_c','admin','xixi')) ;
- ?>
例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 - 仅返回与模式匹配的目录项
代码如下:
- $file = glob('{,.}*', GLOB_BRACE); //匹配所有文件
- $file1 = glob('*.php'); //匹配所有php文件
- print_r($file1);
例4,代码如下:
- <?php
- print_r(listDir('./')); //遍历当前目录
- //开源代码phpfensi.com
- function listDir($dir){
- $dir .= substr($dir, -1) == '/' ? '' : '/';
- $dirInfo = array();
- foreach (glob($dir.'*') as $v) {
- $dirInfo[] = $v;
- if(is_dir($v)){
- $dirInfo = array_merge($dirInfo, listDir($v));
- }
- }
- return $dirInfo;
- }
Tags: PHP文件搜索 PHP搜索文件
- 上一篇:php 给文件尾部增加内容
- 下一篇:php中读取大文件实现方法详解
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)