繁体   English   中英

递归目录搜索php

[英]Recursive Search of Directories php

哇,当我在标题中输入内容时,StackOverFlow甚至可以很好地完成主题和已回答问题的AJAX搜索。 真正值得的程序员。

代码如下。 当我将max递归设置为0时,它工作得很好。因此,问题似乎出在我的递归代码中。 但我找不到它。

我认为opendir可能会返回一个全局的句柄,而我在下一次递归中就踩到了它,因此我将递归设置在opendir句柄之外。 在打开句柄的情况下不会调用任何递归,并且当最大递归大于零时,它仍然不会产生任何结果。 我什至添加了一个最大打开目录。 如您所见,该变量向下递归,如果$ maxopendir为零,则该变量将不会为opendir。 如果那是问题,我仍然会得到一些回报。 但是我什么也没得到,除非$ maxrecursions当然是0,否则它很好,并返回HOME目录中与搜索词匹配的所有文件或目录名称。

递归方面的任何专家都可以纠正我吗?

$dircontent.= searchalldirectories(HOME, $_POST['search'], 0, 5);

function searchalldirectories($directory, $seachterm, $maxrecursions, $maxopendir){
    $dircontent= '';
    $dirs= array();
    if ($maxopendir>0){
        $maxopendir--;
        $handle= opendir($directory);
        while (($dirlisting= readdir($handle))!==false){
            $dn= ''; $fn= '  File';
            if (is_dir($directory.'/'.$dirlisting) && $maxrecursions>0){
                $dirs[count($dirs)]= $directory.'/'.$dirlisting;
                $dn= '/'; $fn= 'Dir';
            }                           
            if (stripos($dirlisting, $seachterm)!==false){
                $dircontent.= '<input type="image" src="go.jpg" name="cmd" value="home:/'.$dirlisting.'"> '.$fn.':// <b>'.$dirlisting.$dn.'/</b><br>';
            }
        }
        closedir($handle);
        for ($i=0; $i<count($dirs); $i++){
            $dircontent.= searchalldirectories($dirs[$i], $s, ($maxrecursions-1), $maxopendir);
        }
    }
    return $dircontent;
}

当opendir失败时,您的循环似乎正在运行。 您可以尝试测试返回值,如下所示:

if(!($handle= opendir($directory))) {
        echo "Could not opendir($directory)\n";
        return false;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM