1
哇,StackOverFlow甚至可以AJAX搜索主題並在我輸入標題時回答問題。真正值得的程序員。目錄的遞歸搜索php
代碼如下。它工作得很好,當我將max遞歸設置爲0.所以看起來很明顯,問題出在我的遞歸代碼中。但我找不到它。
我認爲opendir可能會返回一個全局句柄,我在下一個遞歸中加入它,所以我在opendir句柄之外設置了遞歸。當遞歸的最大值大於零時,不會調用遞歸,並且它仍然不會產生任何內容。我甚至添加了最大打開的目錄。當你看到變量傳遞給遞歸時,如果$ maxopendir爲零,它將不會運行。如果這是問題,我仍然會得到回報。但是我什麼也得不到,除非$ 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;
}
我建議你看一下http://stackoverflow.com/questions/2014474/php-read-sub-directories-and-loop-through-files- how-to –
使用'RecursiveDirectoryIterator'和'Cache'來提高性能 – Baba