我正在尝试以递归方式解析未受保护的Web目录(索引为/),并将其中的所有文件列出到预定义的深度。我已经使用了Simple HTML DOM。
下面是目录结构
--index of/
---dir1/
----dir1.1
-----file1
-----file2
----dir1.2
----dir1.3
----dir1.4
---dir2/
---dir3/
---dir4/
显示
/dir1/dir1.1/file1
/dir1/dir1.1/file2
但在下一次迭代中,它会显示
/dir1/dir1.1/dir1.2/
这是代码
<?php
include 'simple_html_dom.php';
$baseurl = 'http://gawisp.com/perry/';
echo 'depth 0'.'</br>';
echo $baseurl.'</br>';
findLinks($baseurl, 1,10);
function findLinks($url, $depth, $maxDepth){
$html = file_get_html($url);
foreach($html->find('a') as $element)
echo ' '.$element->href.'</br>';;
flush();
ob_flush();
if ($depth <= $maxDepth){
foreach($html->find('a') as $element){
if(substr($element->href,-1,1) == '/'){
if($element->href != '../'){
$url = $url.$element->href;
echo '</br>depth'.$depth.'</br>';
echo $url.'</br>';
flush();
ob_flush();
$result = findLinks($url, $depth + 1, $maxDepth);
echo '......................... '.$result;
}
}
else{
echo '----------->'.$url.$element->href.'</br>';
}
}
unset($element);
}else
exit;
return 0;
}
?>
请引导我走向正确的方向。
答案 0 :(得分:0)
尝试更改代码,使得当前文件夹$url
不会在循环中更改:
// $url = $url.$element->href;
echo '</br>depth'.$depth.'</br>';
echo $url.$element->href.'</br>';
flush();
ob_flush();
$result = findLinks($url.$element->href, $depth + 1, $maxDepth);
echo '......................... '.$result;