我正在编写来自站点(包括子页面)所有站点的刮板链接,并且遇到了一个小问题。我想到了使用递归函数的想法,因为我要扫描的页面具有多个级别。它的结构或多或少是这样的:
Level 1 reference
- Second level reference
-- Third level reference
-- Third level reference
- Second level reference
-- Third level reference
-- Third level reference
-- Third level reference
--- Level four reference
在被测试的链接下是否存在更多或更少的隐藏,这是永远不完全清楚的,因此我想到了递归函数的概念。
它带有指向主页的链接,带有第一个,如果其中的链接数大于一个,则表示该功能相同。
不幸的是,出了点问题,我得到了一块空白的白板,该如何解决?
function scanWebsite($url) {
$html = file_get_contents($url);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXpath($dom);
$nodes = $xpath->query("/html/body//a");
$output = [];
foreach($nodes as $node) {
$url = $node->getAttribute("href");
if(count($nodes) > 1) {
scanWebsite("http://samplewebsite.com" .$url);
} else {
if(preg_match("/\/title\/.*\//", $url)) {
array_push($output, $url);
}
continue;
}
}
return $output;
}
echo '<pre>';
print_r(scanWebsite("http://samplewebsite.com"));
echo '</pre>';