当前位置: 澳门新濠3559 > 编程 > 正文

而搜索的文件可能是位于某个目录下的,"校园服

时间:2019-11-22 20:51来源:编程
"有偿服务","teach"="家教中心","union"="校园服务联盟","job"="学生兼职","free"="信息库");$directory=$REQUEST_URI;while($directory!="/"){$d_text=basename;if(isset{$d_text=$d_label[$d_text];}$d_link=$directory;$d_curx="-$d_

"有偿服务","teach"=>"家教中心","union"=>"校园服务联盟","job"=>"学生兼职","free"=>"信息库");$directory=$REQUEST_URI;while($directory!="/"){$d_text=basename;if(isset{$d_text=$d_label[$d_text];}$d_link=$directory;$d_curx="->$d_text";$d_komplettx=$d_curx.$d_komplettx;$directory=dirname;}echo "栏目导航:".$d_komplettx;?>

}
}
echo "</ul> ";
$mydir->close();
}
//开始运行

例3

 代码如下

<meta http-equiv="content-type" content="text/html; charset=gb2312">

例1

 代码如下

echo "<h2>目录为粉红色</h2><br> ";
tree("./");
?>

例2

这样只是把所有目录下的文件显示了,但我们要判断大小需加上round(filesize($cpath)/1024,1)函数了,这样我们获取大小之后就可以显示文件大小了。

<?php
function tree($directory)
{
$mydir=dir($directory);
echo "<ul> ";
while($file=$mydir->read()){
if((is_dir("$directory/$file")) and ($file!=".") and ($file!=".."))
{echo "<li><font color="#ff00cc"><b>$file</b></font></li> ";
tree("$directory/$file");
}
else{
    $a = explode('.',$file);
    if($a[1] == 'html' || $a[1] == 'htm')
   {
        //unlink($file);
            echo "<li>$file</li> ";
        }       

•GLOB_MARK - 在每个返回的项目中加一个斜线
•GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)
•GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式
•GLOB_NOESCAPE - 反斜线不转义元字符
•GLOB_BRACE - 扩充 {a,b,c} 来匹配 'a','b' 或 'c'
•GLOB_ONLYDIR - 仅返回与模式匹配的目录项 

//字节数转换成带单位的
/* 原理是利用对数求出欲转换的字节数是1024的几次方。
 * 其实就是利用对数的特性确定单位。
*/
function size2mb($size,$digits=2){ //digits,要保留几位小数
  $unit= array('','K','M','G','T','P');//单位数组,是必须1024进制依次的哦。
  $base= 1024;//对数的基数
  $i   = floor(log($size,$base));//字节数对1024取对数,值向下取整。
  return round($size/pow($base,$i),$digits).' '.$unit[$i] . 'B';
}

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

function tree($directory)
{
 $mydir = dir($directory);
 echo "<ul>n";
 while($file = $mydir->read())
 {
  if((is_dir("$directory/$file")) AND ($file!=".") AND ($file!=".."))
  {
   echo "<li><font color="#ff00cc"><b>$file</b></font></li>n";
   tree("$directory/$file");
  }
  else
  echo "<li>$file</li>n";
 }
 echo "</ul>n";
 $mydir->close();
}
//开始运行

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;
}
?>

 

函数说明:array glob ( string $pattern [, int $flags ] )
功能:寻找与模式匹配的文件路径,返回包含匹配文件(目录)的数组(注:被检查的文件必须是服务器系统的,不能用于远程文件)
参数说明:第一个参数:匹配模式;第二个可选参数:

最后给大家附一个字节计算函数,这个可以转换

 代码如下

我们先来看遍历目录

例4

echo "<h2>目录为粉红色</h2><br>n";
tree("./nowamagic");

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

<?php
header("Content-Type:text/html;charset=gbk");
set_time_limit(0);
$dirpath=dirname(__FILE__);
//bytes
$limitByte=1024*110;
//这里改成你合适的查找文件最低大小,单位为字节。1024*100表示 1024*100字节,即100KB
$arrRes=$arrTmp=array();
showMaxFile($dirpath,$limitByte);
function showMaxFile($path,$limitByte){
global $arrRes;
$h=opendir($path);
if($h){
while (false !== ($file = readdir($h))) {
if($file!='.' && $file!='..'){
$cpath=$path.'/'.$file;
if(is_dir($cpath)){
showMaxFile($cpath,$limitByte);
}else{
if(filesize($cpath) > $limitByte){
$arrRes[]=array($cpath,round(filesize($cpath)/1024,1));
//echo "<p>{$cpath}<br />".(filesize($cpath) / 1024)."KB</p>";
}
}
}
}
 
}
closedir($h);
}
foreach($arrRes as $k=>$v){
$arrTmp[$k]=$v[1];
}
arsort($arrTmp);
foreach($arrTmp as $k=>$v){
echo "<p>".str_replace($dirpath,'',$arrRes[$k][0])."<br />".$arrRes[$k][1]."</p>";
}
?>

 代码如下

 代码如下

<?php
/*文件查找函数
用法:
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();

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;
}

<?php

 代码如下

       
}

 代码如下

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

<?php

//test:
findfile ('..',true,'芙蓉jj',array('templates_c','admin','xixi')) ;
?>

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

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

编辑:编程 本文来源:而搜索的文件可能是位于某个目录下的,"校园服

关键词: