Christian Seiler: Regexp mit Links. Brauche mal Eure Hilfe!

Beitrag lesen

Hallo Mathias,

!<A.*HREF="([^"]+)"[^>]*>([^<]+)</A>!is

Das funktioniert nicht ganz so wie erwartet. Denn Dein .* ist greedy und matcht damit zu viel, genau dann nämlich, wenn zwei derartige Tags im Inhalt auftreten. Zwei Möglichkeiten, den Ausdruck abzuwandeln:

!<A[^>]+HREF="([^"]+)"[^>]*>([^<]+)</A>!is

Das wäre mein Favorit.

Alternativ kannst Du auch folgendes machen:

!<A.*HREF="([^"]+)"[^>]*>([^<]+)</A>!isU

Das matcht aber im Gegensatz zur ersten Konstruktion auch auf Konstruktionen wie <A NAME="xyz">blaHREF="foo">Hallo</a>.

Ferner: Alle diese Ausdrücke funktionieren nur solange in den Attributwerten keine > vorkommen, wenn da doch > vorkommen, muss man sich einen komplizierteren Ausdruck ausdenken.

Viele Grüße,
Christian