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