PHP文件搜索程序代码

作者:袖梨 2022-06-24

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

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

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

例1

 代码如下 复制代码

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

 代码如下 复制代码

/*文件查找函数
用法:
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."
n";
                                }
                        }else
                        {
                                echo $file."
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

 代码如下 复制代码

print_r(listDir('./')); //遍历当前目录
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;
}

相关文章

精彩推荐