Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Glob()文件搜索,问题_Php_File_Search_Glob - Fatal编程技术网

Php Glob()文件搜索,问题

Php Glob()文件搜索,问题,php,file,search,glob,Php,File,Search,Glob,一个小问题。我有这段代码,它非常适合文件,但是如果我尝试搜索目录名,结果是空的。我怎样才能解决这个问题 <?php function listdirs($dir,$search) { static $alldirs = array(); $dirs = glob($dir."*"); foreach ($dirs as $d){ if(is_file($d)){ $filename = pathinfo($d);

一个小问题。我有这段代码,它非常适合文件,但是如果我尝试搜索目录名,结果是空的。我怎样才能解决这个问题

<?php
function listdirs($dir,$search)
{
    static $alldirs = array();
    $dirs = glob($dir."*");
    foreach ($dirs as $d){
        if(is_file($d)){
            $filename = pathinfo($d);
            if(eregi($search,$filename['filename'])){   
                print  "<a href=http://someurl.com/" . $d .">". $d . "</a><br/>";
            }
        }else{
            listdirs($d."/",$search);
        }
    }
}
$path = "somedir/";
$search= "test";
listdirs($path,$search);
?>
somedir/测试/

结果:空白我想要:/somedir/test/

somedir/test/test.txt

结果:好的


我还想在目录名中搜索,如何才能做到这一点?

您的脚本工作正常。我认为Web服务器用户没有对给定目录的权限。

如果要搜索目录,必须更改ifis_文件$d块。现在,当它遇到一个目录时,只需再次调用listdirs。。。但这也意味着你将永远看不到有链接到该目录的打印

我建议在foreach中执行类似的操作:


在这种情况下,这怎么可能呢?搜索两个一/二/目录结构结果:空白我想要:/一/二/搜索文件test或test.txt工作正常。one/two/test.txt结果:正常结果:one/two/test.txt文件搜索正常,但任何目录搜索都不正常。我认为这不是任务前的问题。非常感谢!你帮了我很多!还有一个小问题,这个代码安全吗?用户不能列出服务器文件吗?我从用户那里得到的只有$search变量。@彼得:它应该是安全的,因为basename调用。然而,我以前从未尝试过,所以我不能肯定他们不能用特殊编码的字符突破它。
    $filename = basename($d);
    if(eregi($search,$filename)){   
        print  "<a href=http://someurl.com/" . $d .">". $d . "</a><br/>";
    }
    if(is_dir($d)){
        listdirs($d."/",$search);
    }