簡體   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