[英]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.