Michael: Links extrahieren?

Beitrag lesen

hi,

angenommen, ich habe eine variable mit dem quelltext einer datei - wie kriege ich (beispielsweise) einen array mit allen links, die auf .php, .html, .htm, .asp und .shtml enden?

  • ich blicke da zuwenig mit den regulären Ausdrücken durch.

Hi,

Nun gut: Betrachten wir den HTML-Sourcecode als Variable.
Zuerst definierst Du ein Array von Stringvariablen

  1. var URIS = NewArray();

Nun nehmen wir an, alle zu suchenden URIs beginnen mit "HTTP://...
Dann durchsuchen wir die "Variable" mit dem Sourcecode mit

  1. Start = Variable.IndexOf("HTTP:");
  2. Ende = Variable.IndexOf(".htm")+ 4;

und übergeben die erste gefundene URI in den Array:

  1. URIS(1) = Variable.Substring(Start, Ende);

Nun müssen wir noch die Variable kürzen mit

  1. Textende = variable.length;
  2. Variable = Variable.Substr(Ende+1,Textende);

Nun können wir nach der nächsten URI suchen und oben erneut starten.
Das ganze macht sich gut in einer While-Schleife.
Übrigens mußt Du den Text in eine "function" einbinden:

function SucheURISinText(Variable) {
       Hier gehören die o. g. Befehle hin.
}

Wenn Du Hilfe bei den Befehlen brauchst, suche nach dem Wort oder
Befehl unter
http://selfaktuell.teamone.de/   unter Suche.

Suchst Du jetzt mehrere URI-Endungen in einem Durchgang, solltest
Du anstelle von Befehl 3) folgende Befehle einbinden:

Ende1 = Variable.IndexOf(".php");
Ende2 = Variable.IndexOf(".html");
Ende3 = Variable.IndexOf(".asp");
Ende4 = Variable....

Wenn Du jetzt mit einer IF-Staffel den kleinsten Wert ermittelst,
weist Du, welche URI Du als nächst zu lesen hast.

Ende = Min(Ende1, Ende2)
If (Ende == Ende1) Ende = Ende + 3 // +3 wegen .php
else {
   Ende = Min(Ende2, Ende3)
   IF (Ende == Ende2) Ende = Ende + 4; // +4 wegen .html
   else {
      Ende = Min(Ende3, Ende4)
      IF ...
   }
}

Viel Glück und Spaß beim Programmieren...
Michael.