Ik heb het volgende:
<?php
$url = $_GET['url'];
$var = open_url($url);
preg_match_all ("/a[\s]+[^>]*?href[\s]?=[\s\"\']+".
"(.*?)[\"\']+.*?>"."([^<]+|.*?)?<\/a>/",
$var, &$matches);
$matches = $matches[1];
$list = array();
foreach($matches as $var)
{
$url = $var;
$var = open_url($url);
preg_match_all ("/a[\s]+[^>]*?href[\s]?=[\s\"\']+".
"(.*?)[\"\']+.*?>"."([^<]+|.*?)?<\/a>/",
$var, &$matches);
$matches = $matches[1];
$list = array();
foreach($matches as $link)
{
print($link."<br>");
}
}
// De functie
function open_url($url,$ref="")
{
$hfile = fopen($url,"r");
if($hfile){
while(!feof($hfile)){
$html.=fgets($hfile,1024);
}
}
return $html;
}
?>
Een URL die ik opgeef wordt doorlopen op URL's die op hun beurt ook weer doorlopen worden. Echter zijn er enkele problemen.
Hoe kan ik dubbele URL's voorkomen? Dat als een URL al aan de beurt is geweest hij niet nog een x getoond wordt? Hoe kan ik dat als een link bijv <a href="index.php"></a> is dat er dan gekeken wordt naar de host en die voor de url geplaatst wordt? Het kan met replace maar dan moet er gekeken worden of er geen http://blabla.com voor staat... in plaats van kijken of er iets staat en dat replacen.
Hoe kan ik in het script verwerken dat hij niet van een bepaalde domein mag afwijken dus stel ik maak een array("http://www.site1.nl", "http://www.site2.nl") en dan kijken of begin van URL in array voorkomt. Zoja, doorlopen zoniet dan stoppen.
Ga ondertussen zelf aan de slag maar dit waren wat vragen die bij me opkwamen terwijl ik met het script bezig was! Duurde al even voordat ik goed de URL's uit een pagina kon extracten...