Sven Rautenberg: Aus eingelesener Website (in Variable) alle Links ausfiltern?

Beitrag lesen

Moin!

ich habe eine Website eingelesen, diese liegt nun in einer Variablen. Aus dieser möchte ich nun alle Link separieren, so dass ich eine Liste erhalte wie etwa folgt:

Ich habe für sowas mal eine Lösung programmiert:

Ausgangslage: Die einzelnen Zeilen der Seite liegen im Array $seite - eingelesen mit $seite = file('dateiname').

for ($i=0;$i<count($seite);$i++)
{
  preg_match_all("(<[aA] [^>]*>[^<]*</[aA]>)",$seite[$i],$resultat,PREG_SET_ORDER);
  if (count($resultat)>0)
  {
    foreach ($resultat as $einlink)
    {
      eregi("href="([^"]*)"",$einlink[0],$href);
      eregi(">(.*)</a>",$einlink[0],$linktext);
      echo "Linktext:".$linktext[1]." Linkziel:".$href[1]."<br>";
    }
  }
}

Diese Schleife sucht zweistufig:
Zuerst werden alle <a>-Elemente herausgesucht. Wenn eins gefunden wurde, dann wird nach dem Text zwischen <a> und </a> gesucht, sowie der Inhalt des href-Attributes. Kleiner Schönheitsfehler: Das Linkziel muß in doppelten Anführungszeichen stehen, sonst wird nichts gefunden. Ist aber schnell zu reparieren.

- Sven Rautenberg

--
Diese Signatur gilt nur am Freitag.