Michael Schröpl: Text zwischen zwei HTML-Tags

Beitrag lesen

Ich moechte aus einem Link z.B. <a href="http://www.bla.bla.net">Das ist ein Link</a> den
Text rausbekommen. Also es sollte praktisch das, was zwischen > und < steht in eine andere
Variable kopiert werden. Aber wirklich nur der erste Text zwischen diesen Zeichen. Hab schon
im Archiv gestoebert, aber nur Loeschen von Html-Tags gefunden.

Angenommen, ich verstehe Deine Aufgabenstellung richtig und Du hast den entsprechenden Text in einer Variablen $htmltext (das hinzukriegen ist ein anderes Problem wegen des möglichen Zeilenumbruchs in HTML), dann denke ich, Du willst diesen Wert analysieren mit dem regular expression

if ($htmltext =~ /<a[^>]>(.*?)</a>/i)
   {
     my $linktext = $1;
     # ... und hier die Weiterverarbeitung
   }
(Das "i" am Ende macht die Sache case-insensitiv wegen des "a" im Tag; das "?" macht den regular expression weniger gierig, weil Du ja mehrere Treffer haben könntest.)

Bedenke, daß Du damit *nur* den *ersten* Treffer innerhalb Deines Textes bekommst - wenn Du mehrere hast, wird es etwas aufwendiger (Rest der Zeile zwischenspeichern und Schleife drum herum).

Meine 'Lösung' ist nicht idiotensicher: Es könnte sein, daß jemand innerhalb des HREF-Wertes in "" eingeschlossen ein ">"-Zeichen verwendet ... :-(((
(Hoffentlich erlaubt kein Dateisystem solche Zeichen innerhalb von Dateinamen.)

Gibt es eigentlich irgendwo im
Web weiterfuehrende Literatur zu solchen Extraktionsproblemen?

Mit regular expressions kann man alles machen. ;-)