Hilfe bei Regulärem Ausdruck

Rocky500

Member
ID: 306213
L
16 Dezember 2007
14
1
Hallo,
ich habe einen Regex, der alle Links einer Website analysieren soll. Es sind natürlich auch subdomains (bla.bild.de) erlaubt.

Was nicht erlaubt ist, ist logischerweise sportbild.de & alle anderen Seiten. Ansonsten muss er natürlich auch Links aufdecken, die beispielsweise so verlinkt sind => <a href="/imprint">..</a>

Was nicht geht, sind Links wie diese hier: <a href="javascript(doAnything);"> . Mein Ausdruck matcht zwar schon einige allerdings kriege ich eben diese JS-Links zurück und auch Links zu sportbild.de & Co.

Könnt ihr mir helfen? Wäre super wichtig =)
Code:
<a[^>]+?href=["\']((?:(?!https?://)|(?=https?://(?:www\.)?[^"\']+?bild\.de))[^"\']+)

Danke.
 
sportbild.de gibt es nicht und leitet nach sportbild.bild.de um.
Somit wird es also erkannt !
Diese Methode von javascript ein Popupfenster zu öffnen solltest Du herausfiltern, weil dies kein Link ist. Es sei Du möchtest gerade wissen, wieviele Links auf der Seite existieren und wieviele davon ein Popupaufruf sind.
Dann solltest Du auch die Ankeraufrufe checken, die als Link ebenso möglich sind, um die Statistik zu vervollständigen.

Das was nicht erlaubt ist, musst Du mal genau definieren.

Oder du prüfst halt, ist beim Aufruf nach dem href=" ein www drin oder nicht oder sind in dem nach dem href=" mind. 2 Punkte enthalten.
Wird dann schwierig bei den URL wie ichhabkeinbock.de.vu ...
Ich denke es wäre sinnvoll, einen Ausdruck zu schreiben, der jeden <a href>...</a> herausfiltert und in eine Liste,Array packt.
Dann gehst Du eben diese(s) sukzesive durch, und wendest Filter an (weitere RA's)
zB: /wort
zB: /wort.endung
zB: /wort.endung?*
...

Hoffe ich gebe Dir ein wenig Hilfe, auch wenn ich Dir keinen RA gebe, der alles "erschlägt" bzw RA's die als Filter einsetzbar sind.
Ein wenig damit experiementieren, dann klappt das auch!

Nur nicht denken, mit einem Ausdruck muss ich alles schaffen.
Meist unmöglich, weil sich in diesem mind. 2 Anweisungen irgnedwann gegenseitig aufheben (können)...