[PHP] Backlink Check Ansatzhilfe

aber an robots.txt halten sich suchmaschinen noch... ;)

btw: ich würde auf keine fall alle unterseiten einlesen... das kann im besten fall inner endlosschleife enden. ich würde maximal 2 ebenen parsen und dann ende...

also seite einlesen
PHP:
$daten = file_get_contents('dieseite.de');

prüfen ob link da (sehr primitv gelöst jetzt)

PHP:
preg_match('~href=(?:")https://derlink.de~'...)

wenn ja alles ok ansonsten alle links auslesen
PHP:
preg_match_all('~href=(?:")(\S*?)(?:")~'...)

preg_match_all auswerten... unterscheiden ob interner link oder externen. interne links zusammenbauen...

und jetzt für alle ausgelesenen links nochmal das selbe.

wenn mans mit ner rekrusiven funktion lösen will würde das so ausschauen:
PHP:
function serach($url,$serach_link,$ebene = 0) {
    //prüfen ob ebene noch unter 2 ist wenn nein gleich wieder return;

    //seite einlesen
    //prüfen ob backlink da wenn ja rekursion abbrechen und flag auf ok setzen
    //ansonsten alle links auslesen und für jeden gefundenen wieder serach(ausgelesener link,$serach_link,$ebene+1) aufrufen
    //flag setzen das link nichtg gefunden
}

aber das würde ich nicht empfehlen... für so nen spaß script mag das zwar noch gehen, aber lass das mal ne große seite sein dann stößt du so auch ganz schnell an die grenzen.
ich würde hier eher auf ne endlosschleife setzen die einen buffer mit urls abarbeitet... ist bei weiten flexibler. prinzig grob umrisen wäre hier das du am anfang eine deine url innen buffer schreibst. (sei es ein array,ne txtdatei, ne datenbank oder schlag mich tot)
PHP:
$array = array(array(url=>'dieurl.de',status=>'offen','ebene'=>0);
while(1) {
     //holle erste url die noch offen ist
     $url = $array[$offene_url];
     //url einlesen
     //url status auf abgeschlossen setzen
     //prüfen ob backlink, wenn ja flag auf ok setzen und break;
     //ansonsten prüfen ob akutelle url noch unter ebene 2 ist wenn ja alle links einlesen von seite und in buffer speichern (doppelte urls filtern); dabei aktuelle ebene+1 speichern 
}

//prüfen ob flag gesetzt ansonsten kein backlink gesetzt

hat den großen vorteil das man den buffer auslagern kann und jederzeit von der letzten stelle weiter machen kann, es wird nix doppelt ausgewertet, man hat keine overhead durch rekursion und man kann bei weiten besser bei einem fund die suche abbrechen als bei der rekursiven lösung.
 
Völlig fernab vom Topic und Deinem guten Post nur mal 'ne Frage:

Was meinst Du mit (?:") in Deinen RegExp? Sollen die Quotes optional werden? Dann wäre das doch eher "?. Ansonsten sehe ich den Sinn nicht darin, eine nicht gecapturete Capturegroup aufzumachen, die nur ein einziges Zeichen enthält... :think:
 
Was meinst Du mit (?:") in Deinen RegExp? Sollen die Quotes optional werden? Dann wäre das doch eher "?. Ansonsten sehe ich den Sinn nicht darin, eine nicht gecapturete Capturegroup aufzumachen, die nur ein einziges Zeichen enthält... :think:

:doh: ja sie sollten optional sein... hab irgendwie geträumt und dabei noch die hälfte vergessen. das geträumte hätte richtig eigentlich so ausschauen sollen (?:")?... kommt davon das ich manchmal auch mehr als nur ein zeichen optional haben will.
 
aber an robots.txt halten sich suchmaschinen noch... ;)
Google hält sich definitiv nicht an die robots.txt. Ich habe auf einer meiner Seiten einen Link, den ich mittels display:none versteckt habe. Dieser Link zeigt in ein Verzeichnis, welches per robots.txt ausgesperrt ist, und dort wird dann nur die IP etc. vom Bot gespeichert. Und was soll ich sagen, Google-IPs sind dort auch schon gelandet...