Dies ist ein Beispiel für meinen Code. Es kann nur eine Webseite scannen und alle Links auf dieser Seite ausdrucken.Wie erhalten Sie alle Links auf allen Seiten der Website rekursiv mit PHP?
Ich muss rekursiv die gesamte Website scannen und alle Links für alle Seiten dieser Website drucken. Hier
ist ein Beispiel für meine Klasse:
<?php
class ParseLinks
{
private $sRootLink;
private $iCountOfPages; //The number of links that recursively prints
private $iCounter = 0;
private $cache = array();
public function __construct($sRootLink, $iCountOfPages)
{
$this->sRootLink = $sRootLink;
$this->iCountOfPages = $iCountOfPages;
}
public function getRootLink()
{
return $this->sRootLink;
}
public function getCountOfPages()
{
return $this->iCountOfPages;
}
public function setRootLink($sRootLink)
{
$this->sRootLink = $sRootLink;
}
public function setCountOfPages($iCountOfPages)
{
$this->iCountOfPages = $iCountOfPages;
}
public function getAllLinks()
{
$this->rec($this->sRootLink);
}
private function rec($link)
{
$this->cache[$link] = true;
$html = file_get_contents($link);
$DOM = new DOMDocument;
@$DOM->loadHTML($html);
$links = $DOM->getElementsByTagName('a');
//-----------------
$sPatternURL = $this->sRootLink;
foreach ($links as $element) {
if($this->iCounter == $this->iCountOfPages)
break;
if($this->startsWith($element->getAttribute("href"), $sPatternURL))
{
echo $element->getAttribute("href") . "<br>";
$this->iCounter++;
//$this->rec($element->getAttribute("href"));
}
}
}
private function startsWith($haystack, $needle)
{
// search backwards starting from haystack length characters from the end
return $needle === "" || strrpos($haystack, $needle, -strlen($haystack)) !== false;
}
}