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